KR20220092365A - 멀티-테넌트 저장 블록 또는 블록 그룹을 인증하기 위한 방법, 시스템, 제품 및 장치 - Google Patents
멀티-테넌트 저장 블록 또는 블록 그룹을 인증하기 위한 방법, 시스템, 제품 및 장치 Download PDFInfo
- Publication number
- KR20220092365A KR20220092365A KR1020210161193A KR20210161193A KR20220092365A KR 20220092365 A KR20220092365 A KR 20220092365A KR 1020210161193 A KR1020210161193 A KR 1020210161193A KR 20210161193 A KR20210161193 A KR 20210161193A KR 20220092365 A KR20220092365 A KR 20220092365A
- Authority
- KR
- South Korea
- Prior art keywords
- storage
- storage block
- tenant
- application
- data
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 553
- 238000000034 method Methods 0.000 title claims description 49
- 238000004519 manufacturing process Methods 0.000 title description 2
- 230000005012 migration Effects 0.000 claims abstract description 72
- 238000013508 migration Methods 0.000 claims abstract description 72
- 238000013507 mapping Methods 0.000 claims abstract description 9
- 230000004044 response Effects 0.000 claims description 31
- 238000012795 verification Methods 0.000 claims description 31
- 238000010200 validation analysis Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 230000001133 acceleration Effects 0.000 description 11
- 230000002776 aggregation Effects 0.000 description 8
- 238000004220 aggregation Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013502 data validation Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012994 industrial processing Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000002932 luster Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/763—ASIC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
예시적인 장치는, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹(a group of storage blocks) - 저장 블록 그룹은 서명과 연관되고, 서명은 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하고, 소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하며, 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행하는 블록 관리자를 포함한다. 예시적인 장치는 또한, 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 메타데이터는 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하는 마이그레이션 핸들러를 포함한다.
Description
본 개시는 일반적으로 데이터를 인증하는 것에 관한 것으로, 보다 구체적으로는 멀티-테넌트 저장 블록 또는 블록 그룹을 인증하는 방법, 시스템, 제품 및 장치에 관한 것이다.
에지 컴퓨팅은 데이터 계산 및 데이터 저장 위치를 필요한 위치에 더 가깝게 배치하는 분산 컴퓨팅 아키텍처이다. 에지 컴퓨팅은 데이터 계산 및 저장이 완료되는 위치(예컨대, 기지국, 네트워크 라우터, 핫스팟 등)와 데이터 계산 및 저장이 요청되는 위치(예컨대, 엔드포인트/사용자 장치) 사이의 거리를 줄여서 응답 시간을 향상시키고 대역폭을 절감한다. 에지 클라우드 플랫폼은 고객/사용자(예컨대, 테넌트)가 클라우드에서 컴퓨팅 리소스를 공유할 수 있게 하는 멀티-테넌트 아키텍처를 포함할 수 있다. 에지 컴퓨팅 플랫폼은 서로 다른 테넌트와 서로 다른 에지 장치 간에 데이터를 공유하기 위한 데이터 인증 및 증명을 포함한다.
도 1은 에지 컴퓨팅을 위한 에지 클라우드 구성의 개요를 도시한 것이다.
도 2는 엔드포인트, 에지 클라우드 및 클라우드 컴퓨팅 환경 사이의 운영 계층을 도시한 것이다.
도 3은 에지 컴퓨팅 시스템에서 네트워킹 및 서비스에 대한 예시적인 접근 방식을 도시한 것이다.
도 4는 예시적인 종래의 에지 컴퓨팅 아키텍처를 도시한 것이다.
도 5는 본 개시의 교시에 따라 구현된 예시적인 에지 컴퓨팅 아키텍처를 도시한 것이다.
도 6은 본 개시의 교시에 따라 구현된 예시적인 저장 제어기의 블록도이다.
도 7은 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 8은 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 9는 읽기 요청을 처리하도록 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 10은 마이그레이션 요청을 처리하도록 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 11은 도 6의 예시적인 저장 제어기를 구현하기 위해 도 7 내지 10의 명령어를 실행하도록 구성된 예시적인 처리 플랫폼의 블록도이다.
도 12는 소프트웨어(예컨대, 도 7-10의 예시적인 컴퓨터 판독 가능 명령어에 대응하는 소프트웨어)를 소비자(예컨대, 라이센스, 판매 및/또는 또는 사용), 소매업체(예컨대, 판매, 재판매, 라이선스 및/또는 하위 라이선스) 및/또는 OEM(Original Equipment Manufacturer)(예컨대, 소매업체 및/또는 직접 구매 고객에 배포할 제품에 포함)과 같은 클라이언트 장치에 배포하기 위한 예시적인 소프트웨어 배포 플랫폼의 블록도이다.
도면들은 축척으로 도시되어 있지 않다. 일반적으로, 도면(들) 및 첨부된 상세한 설명 전체에 걸쳐 동일하거나 유사한 부분을 지칭하기 위해 동일한 참조 번호가 사용될 것이다.
달리 구체적으로 언급되지 않는 한, "제1", "제2", "제3" 등과 같은 용어는 본 명세서에서 우선순위, 물리적 순서, 목록의 배열 및/또는 순서를 의미한다거나 또는 이러한 의미를 나타내지 않고 사용되며, 어떤 식으로든, 개시된 예를 이해하기 쉽게 하기 위해 요소를 구별하기 위한 레이블 및/또는 임의의 이름으로만 사용된다. 일부 예에서, "제1"이란 용어는 상세한 설명에서 한 요소를 나타내는 데 사용될 수 있지만, 동일한 요소가 청구범위에서는 "제2" 또는 "제3"과 같은 다른 용어로 지칭될 수도 있다. 이 경우, 그러한 용어는 단지, 예를 들어 동일한 명칭을 가질 수 있는 요소들을 구별하기 위해 사용될 뿐이라는 것을 이해해야 한다. 본 명세서에서 사용되는 "실질적으로 실시간"이란 표현은 계산 시간, 전송 등에 있어서 실세계 지연이 있을 수 있음을 인식하는 거의 즉각적인 방식의 발생을 나타낸다. 따라서 달리 지정되지 않는 한 "실질적으로 실시간"은 실시간 +/- 1초를 나타낸다.
도 2는 엔드포인트, 에지 클라우드 및 클라우드 컴퓨팅 환경 사이의 운영 계층을 도시한 것이다.
도 3은 에지 컴퓨팅 시스템에서 네트워킹 및 서비스에 대한 예시적인 접근 방식을 도시한 것이다.
도 4는 예시적인 종래의 에지 컴퓨팅 아키텍처를 도시한 것이다.
도 5는 본 개시의 교시에 따라 구현된 예시적인 에지 컴퓨팅 아키텍처를 도시한 것이다.
도 6은 본 개시의 교시에 따라 구현된 예시적인 저장 제어기의 블록도이다.
도 7은 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 8은 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 9는 읽기 요청을 처리하도록 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 10은 마이그레이션 요청을 처리하도록 도 6의 예시적인 저장 제어기를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 11은 도 6의 예시적인 저장 제어기를 구현하기 위해 도 7 내지 10의 명령어를 실행하도록 구성된 예시적인 처리 플랫폼의 블록도이다.
도 12는 소프트웨어(예컨대, 도 7-10의 예시적인 컴퓨터 판독 가능 명령어에 대응하는 소프트웨어)를 소비자(예컨대, 라이센스, 판매 및/또는 또는 사용), 소매업체(예컨대, 판매, 재판매, 라이선스 및/또는 하위 라이선스) 및/또는 OEM(Original Equipment Manufacturer)(예컨대, 소매업체 및/또는 직접 구매 고객에 배포할 제품에 포함)과 같은 클라이언트 장치에 배포하기 위한 예시적인 소프트웨어 배포 플랫폼의 블록도이다.
도면들은 축척으로 도시되어 있지 않다. 일반적으로, 도면(들) 및 첨부된 상세한 설명 전체에 걸쳐 동일하거나 유사한 부분을 지칭하기 위해 동일한 참조 번호가 사용될 것이다.
달리 구체적으로 언급되지 않는 한, "제1", "제2", "제3" 등과 같은 용어는 본 명세서에서 우선순위, 물리적 순서, 목록의 배열 및/또는 순서를 의미한다거나 또는 이러한 의미를 나타내지 않고 사용되며, 어떤 식으로든, 개시된 예를 이해하기 쉽게 하기 위해 요소를 구별하기 위한 레이블 및/또는 임의의 이름으로만 사용된다. 일부 예에서, "제1"이란 용어는 상세한 설명에서 한 요소를 나타내는 데 사용될 수 있지만, 동일한 요소가 청구범위에서는 "제2" 또는 "제3"과 같은 다른 용어로 지칭될 수도 있다. 이 경우, 그러한 용어는 단지, 예를 들어 동일한 명칭을 가질 수 있는 요소들을 구별하기 위해 사용될 뿐이라는 것을 이해해야 한다. 본 명세서에서 사용되는 "실질적으로 실시간"이란 표현은 계산 시간, 전송 등에 있어서 실세계 지연이 있을 수 있음을 인식하는 거의 즉각적인 방식의 발생을 나타낸다. 따라서 달리 지정되지 않는 한 "실질적으로 실시간"은 실시간 +/- 1초를 나타낸다.
콘텐츠 전달 네트워크(CDN) 및 저장 게이트웨이가 일반적으로 일부 클라우드 서비스 제공자(CSP)에 사용되지만, 에지 클라우드 아키텍처는 테넌트당 데이터 및 콘텐츠를 관리하기 위해 가속화되고 전체적인 계층적 저장 아키텍처를 생성할 수 있다. 에지 클라우드 아키텍처는 일반적으로 사용자 요청을 더 잘 처리하기 위해 콘텐츠를 캐싱하기 위해 에지 위치에 저장부를 제공한다. 에지 클라우드 아키텍처는 (지연을 줄이고 처리량을 높임으로써) 사용자 경험을 향상시키고, (클라우드에 대한 의존성을 회피하여) 신뢰도를 높이며, (클라우드까지 횡단하는 다양한 네트워크 요소에 대한 컴퓨팅 및 트래픽을 회피하여) 비용을 절감한다.
에지 클라우드 아키텍처는 일반적으로 멀티-티어(예컨대, 기지국, 코어 네트워크, 데이터 센터, 그 다음 클라우드/OTT(over-the-top) 네트워크)이고, 자동 데이터 캐싱 솔루션(예컨대, 다른 CommSP, CSP 및 네트워크 에지를 공유하는 사용자)를 포함한다. 또한, 에지 클라우드 아키텍처는, 특정 테넌트에 다소간의 저장 용량 및/또는 성능을 동적으로 제공하고 데이터 인증 및 증명을 이용한 안전한 콘텐츠 관리 및 저장과 함께 물리적으로 안전한 콘텐츠 관리 및 저장을 제공하는 확장 가능한 저장 아키텍처를 제공한다(예컨대, PCIe 스니퍼가 기지국을 감시하는 것을 방지한다). 일부 예에서, 에지 클라우드 아키텍처는 에지 클라우드에서 데이터 트래픽을 개선하기 위해 하드웨어 기반 가속 아키텍처(예컨대, 콘텐츠 프리페칭, 데이터 흐름을 모델링하기 위한 심층 신경망(DNN) 등)를 포함한다.
일부 예에서, 에지 컴퓨팅 아키텍처는 사용자(테넌트)가 에지 클라우드에서 컴퓨팅 리소스를 공유할 수 있게 하는 멀티-테넌트 클라우드이다. 그러나, 에지 컴퓨팅 아키텍처(또는 임의의 분산 멀티-테넌트 아키텍처)에서의 문제는 테넌트, 장치 및/또는 서비스가 특정 저장 부분(예컨대, 하나 이상의 저장 블록)이 특정 서비스 또는 엔터티에 의해 생성되었음을 어떻게 검증할 수 있느냐는 것이다. 예를 들어, 데이터가 서로 다른 에지 위치로 마이그레이션됨에 따라, 멀티-테넌트 에지 컴퓨팅 아키텍처에서 데이터가 생성된 위치를 검증하는 것이 어려울 수 있다.
저장 부분을 검증하기 위한 이전의 솔루션들은 파일 또는 다른 저장 객체에 서명하고 이들 서명을 저장부 자체에 저장하는 소프트웨어 솔루션에 기초한다(예컨대, 소프트웨어 스택은 데이터 서명 및 검증을 관리하는 책임이 있다). 그러나, 소프트웨어 스택이 데이터 해싱 및 서명을 수행하도록 하면 데이터의 세분성 수준에 따라 큰 오버헤드가 발생할 수 있다. 예를 들어, 데이터 해싱 및 서명을 수행하는 저장부 스택은 높은 수준의 세분성을 위해 총 소유 비용(TCO)을 상당히 증가시킬 수 있다. 유사하게, 데이터의 데이터 검증을 추가로 수행하는 소프트웨어 스택은 TCO를 증가시킬 뿐만 아니라, 소프트웨어 설계의 복잡성을 증가시킨다. 마지막으로, 여러 에지 위치에서 저장 객체의 각 파일 그룹과 연관된 메타데이터 및 데이터를 마이그레이션하는 소프트웨어 스택은 TCO를 더욱 증가시키고 에지 클라우드 아키텍처의 지연을 증가시킬 수 있다. 그러나, 에지 저장 게이트웨이에서 데이터 서명, 검증 및 마이그레이션을 수행하는 소프트웨어 스택으로 인한 TCO 및 지연의 증가는 실시간 솔루션에서 용인되지 않는다.
본 명세서에 개시된 예들은, 서비스 개인 키를 저장 블록 그룹에 매핑하는 것과, 자동 또는 서비스 생성 블록 인증을 수행하는 것과, 서명 검증을 이용하여 저장 블록 그룹을 읽고 검증하는 다른 소프트웨어 엔티티를 위한 수단을 제공하는 것을 허용하는 로직을 포함하도록 에지 클라우드 아키텍처에서 현재의 저장 아키텍처(예컨대, 저장 장치들)를 확장한다. 본 명세서에 개시된 예들은 이전의 솔루션에서 볼 수 있듯이 소프트웨어 스택에 의존하는 대신 에지 클라우드 아키텍처 내 저장 장치를 확장한다.
본 명세서에 개시된 예들은 현재의 저장 아키텍처를 확장하여 블록 또는 멀티-블록 단위로 멀티-테넌트 시스템의 콘텐츠/데이터를 인증하는 하드웨어 가속기를 제공한다. 또한, 본 명세서에 개시된 예들은 저장 블록과 연관된 메타 데이터를 따라 서로 다른 시스템 간에 데이터의 저장 블록을 마이그레이션하기 위한 하드웨어 회로를 포함한다. 본 명세서에 개시된 예들에서, 하드웨어 회로는 서비스 및/또는 테넌트에 대해 대응하는 서명을 사용하여 데이터를 생성한 서비스 및/또는 테넌트에 대한 저장 블록 인증을 제공한다.
본 명세서에 개시된 예들은 (특정 테넌트가 소유한) 특정 서비스와 연관된 개인 및 공개 키를 안전하게 등록하고 저장한다. 본 명세서에 개시된 예들은 특정 테넌트에 대한 저장 블록 그룹 목록(예컨대, 각 그룹은 1 내지 N개의 저장 블록을 포함할 수 있음)을 매핑하는 것을 관리한다. 본 명세서에 개시된 예에서, 저장 블록의 각 그룹은 그 그룹 내의 모든 블록에 대한 마지막 서명을 포함한다. 본 명세서에 개시된 예는 서명(예컨대, 개인 키를 사용한 서명 해시)을 자동으로 또는 서비스 요청마다 검증할 수 있다. 본 명세서에 개시된 예들은, 다른 애플리케이션이 저장 블록(들)에 대한 읽기 요청 시 서명을 검증하도록 저장 장치에 요청할 수 있도록 다른 애플리케이션에 대한 인터페이스를 제공한다. 본 명세서에 개시된 예들은 또한 하드웨어 회로를 사용하여 에지 클라우드 아키텍처의 에지 위치들 간에 데이터를 마이그레이션한다.
본 명세서에 개시된 예들은 더 빠르고 투명한 블록 또는 멀티-블록 데이터 인증을 구현하는 데 사용될 수 있다. 본 명세서에 개시된 예들은 하나의 서명을 사용하여 동일한 테넌트/서비스와 관련된 다수의 저장 블록(예컨대, 다수 파일)에 대한 데이터 인증을 제공한다. 본 명세서에 개시된 예들은 애플리케이션이 에지 클라우드 아키텍처에서 지연을 증가시키지 않으면서 미세 단위로 저장 블록에 서명하고 검증하는 하드웨어 회로에 의존할 수 있게 한다. 본 명세서에 개시된 예는 분산 아키텍처(예컨대, 5G 배치)에서 소프트웨어 스택에 투명하게 데이터 증명을 허용한다. 본 명세서에 개시된 예는, 소프트웨어 스택 이질성(예컨대, ceph는 하나의 에지 위치이고 luster이 제2 에지 위치에 있음) 또는 시스템 이질성(예컨대, 시스템의 한 부분에 우분투(Ubuntu)가 있고 시스템의 제2 부분에 윈도우즈(Windows) 서버가 있음)에도 불구하고, 저장 블록 및 대응하는 인증 메타데이터를 하드웨어 회로와 소프트웨어 스택 사이에서 투명하게 자동으로 마이그레이션한다. 본 명세서에 개시된 예들은 검증을 제공하면서 애플리케이션이 데이터와 상호작용할 수 있는 인터페이스를 제공함으로써 소프트웨어 스택의 애플리케이션에 대한 투명성을 유지한다. 본 명세서에 개시된 예들은 또한 하드웨어 회로와 소프트웨어 스택 사이의 투명성에 의해 제공되는 데이터 증명 데이터(attestation data)를 발견함으로써 저장 블록 및 대응하는 인증 메타데이터를 자동으로 마이그레이션하는 데 사용될 수 있다.
도 1은 에지 컴퓨팅에 대한 구성의 개요를 보여주는 블록도(100)이며, 이는 다음의 많은 예에서 "에지 클라우드"로 지칭되는 처리 계층을 포함한다. 도시된 바와 같이, 에지 클라우드(110)는 액세스 포인트 또는 기지국(140), 로컬 프로세싱 허브(150), 또는 중앙국(120)과 같은 에지 위치에 함께 위치하며, 따라서 다수의 엔티티, 장치 및 장비 인스턴스를 포함할 수 있다. 에지 클라우드(110)는 클라우드 데이터 센터(130)보다 엔드포인트(소비자 및 생산자) 데이터 소스(160)(예컨대, 자율 차량(161), 사용자 장비(162), 비즈니스 및 산업 장비(163), 비디오 캡처 장치(164), 드론(165), 스마트 도시 및 빌딩 장치(166), 센서 및 IoT 장치(167) 등)에 훨씬 더 가깝게 위치한다. 에지 클라우드(110)의 에지에서 제공되는 컴퓨팅, 메모리 및 저장 리소스는 엔드포인트 데이터 소스(160)에 의해 사용되는 서비스 및 기능에 대한 초저지연 응답 시간을 제공하는 데 중요하며, 뿐만 아니라 에지 클라우드(110)에서 클라우드 데이터 센터(130)로 향하는 네트워크 백홀 트래픽을 감소시켜 다른 이점들 중에서 에너지 소비 및 전체 네트워크 사용을 개선한다.
컴퓨팅, 메모리 및 저장부는 희소한 리소스이며, 일반적으로 에지 위치에 따라 감소한다(예컨대, 중앙국에서보다, 기지국에서보다 소비자 엔드포인트 장치에서 사용 가능한 프로세싱 리소스가 더 적음). 그러나, 에지 위치가 엔드포인트(예컨대, 사용자 장비(UE))에 더 가까울수록 공간 및 전력이 더 많이 제한된다. 따라서, 에지 컴퓨팅은 지리적으로나 네트워크 액세스 시간 면에서나 더 가까이 위치하는 리소스를 더 많이 분산시킴으로써, 네트워크 서비스에 필요한 리소스의 양을 줄이려고 시도한다. 이런 방식으로, 에지 컴퓨팅은 적절한 경우, 컴퓨팅 리소스를 워크로드 데이터로 가져오거나 워크로드 데이터를 컴퓨팅 리소스로 가져오려고 시도한다.
다음은 다수의 잠재적 배포를 커버하고 일부 네트워크 운영자 또는 서비스 제공자가 자체 인프라에서 가질 수 있는 제한을 해결하는 에지 클라우드 아키텍처의 양태들을 설명한다. 이들은 에지 위치에 따른 구성의 변형(예를 들어 기지국 수준의 에지는, 예컨대, 다중 테넌트 시나리오에서 더 제한적인 성능 및 기능을 가질 수 있기 때문에); 에지 위치, 위치 티어 또는 위치 그룹에 사용할 수 있는 컴퓨팅, 메모리, 저장부, 패브릭, 가속 또는 이와 유사한 리소스 유형에 기초한 구성; 서비스, 보안, 관리 및 오케스트레이션 기능; 및 엔드 서비스의 사용성 및 성능을 달성하기 위한 관련 목표를 포함한다. 이들 배포는 지연, 거리 및 타이밍 특성에 따라 "니어 에지(near edge)", "클로즈 에지(close edge)", "로컬 에지(local edge)", "중간 에지(middle edge)" 또는 "파 에지(far edge)" 계층으로 간주될 수 있는 네트워크 계층에서 처리를 수행할 수 있다.
에지 컴퓨팅은 일반적으로 기지국, 게이트웨이, 네트워크 라우터 또는 데이터를 생성하고 소비하는 엔드포인트 장치에 훨씬 더 가까운 기타 장치에서 구현되는 컴퓨팅 플랫폼(예컨대, x86 또는 ARM 컴퓨팅 하드웨어 아키텍처)의 사용을 통해 네트워크의 "에지"에서 또는 더 가까이에서 컴퓨팅이 수행되는 개발 패러다임이다. 예를 들어, 에지 게이트웨이 서버는 접속된 클라이언트 장치에 대한 저지연 사용 사례(예컨대, 자율 주행 또는 비디오 감시)를 위해 실시간으로 계산을 수행하도록 메모리 및 저장 리소스의 풀을 구비할 수 있다. 또는 예를 들어, 기지국은 더 이상 백홀 네트워크를 통해 데이터를 통신하지 않고, 접속된 사용자 장비에 대한 서비스 워크로드를 직접 처리하도록 컴퓨팅 및 가속 리소스로 보강될 수 있다. 또는 다른 예로서, 중앙국 네트워크 관리 하드웨어는, 가상화된 네트워크 기능을 수행하고 접속된 장치에 대한 서비스 및 소비자 기능 실행을 위한 컴퓨팅 리소스를 제공하는 표준화된 컴퓨팅 하드웨어로 대체될 수 있다. 에지 컴퓨팅 네트워크 내에는, 컴퓨팅 리소스가 데이터로 "이동"되는 서비스 시나리오와 데이터가 컴퓨팅 리소스로 "이동"되는 시나리오가 있을 수 있다. 또는, 예를 들어 기지국 컴퓨팅, 가속 및 네트워크 리소스는, 코너 케이스, 긴급 상황을 관리하거나 훨씬 더 긴 구현 수명에 대한 배포된 리소스의 수명을 제공하기 위해 휴면 용량(가입, 주문형 용량)을 활성화하여 필요에 따라 워크로드 수요에 맞게 확장하기 위해 서비스를 제공할 수 있다.
도 2는 엔드포인트, 에지 클라우드 및 클라우드 컴퓨팅 환경 사이의 운영 계층을 도시한 것이다. 구체적으로, 도 2는 네트워크 컴퓨팅의 다수의 예시적인 계층들 사이에 에지 클라우드(110)를 활용하는 컴퓨팅 사용 사례(205)의 예를 도시한다. 이들 계층은 데이터 생성, 분석 및 데이터 소비 활동을 수행하기 위해 에지 클라우드(110)에 액세스하는 엔드포인트(장치 및 사물) 계층(200)에서 시작한다. 에지 클라우드(110)는 물리적으로 근접한 에지 시스템에 위치한 게이트웨이, 온프레미스 서버 또는 네트워크 장비(노드(215))를 갖는 에지 장치 층(210); 기지국, 무선 처리 장치, 네트워크 허브, 지역 데이터 센터(DC) 또는 로컬 네트워크 장비(장비(225))를 포함하는 네트워크 액세스 계층(220); 및 그 사이에 위치하는 (상세하게 도시되어 있지 않지만 층(212) 내의) 임의의 장비, 장치 또는 노드와 같은 다수의 네트워크 층에 걸쳐 있을 수 있다. 에지 클라우드(110) 내의 그리고 다양한 계층들 사이의 네트워크 통신은 도시되지 않은 접속 아키텍처 및 기술을 비롯한 임의의 수의 유선 또는 무선 매체를 통해 발생할 수 있다.
네트워크 통신 거리 및 처리 시간 제약으로 인한 지연의 예는, 그 범위가 엔드포인트 계층(200) 사이에서 밀리초(ms) 미만에서부터, 에지 장치 계층(210)에서는 5ms 이하, 네트워크 액세스 계층(220)에서의 노드들과 통신할 때에는 10 내지 40ms에 이른다. 에지 클라우드(110) 너머에는 코어 네트워크(230) 및 클라우드 데이터 센터(240) 층이 있으며, 이들 각각은 증가된 지연 시간을 갖는다(예컨대, 코어 네트워크 계층(230)에서 50-60ms 사이이고, 클라우드 데이터 센터 계층에서는 100ms 이상에 이른다). 그 결과, 코어 네트워크 데이터 센터(235) 또는 클라우드 데이터 센터(245)에서의 동작은 지연이 최소 50~100ms 이상이며, 사용 사례(205)의 많은 시간 임계적(time-critical) 기능을 수행하지 못할 것이다. 이들 지연 값들 각각은 설명 및 대비를 위해 제공되며, 다른 액세스 네트워크 매체 및 기술을 사용하면 대기 시간을 더욱 줄일 수 있다는 것을 이해할 수 있을 것이다. 일부 예들에서, 네트워크의 제각기의 부분들은 네트워크 소스 및 목적지에 대해 "클로즈 에지", "로컬 에지", "니어 에지", "중간 에지", 또는 "파 에지" 계층들로 분류될 수 있다. 예를 들어, 코어 네트워크 데이터 센터(235) 또는 클라우드 데이터 센터(245)의 관점에서, 중앙국 또는 콘텐츠 데이터 네트워크는 (사용 사례(205)의 장치 및 엔드포인트와 통신할 때 높은 지연 값을 갖는, 클라우드에 "근접한") "니어 에지" 계층 내에 위치하는 것으로 고려될 수 있는 반면, 액세스 포인트, 기지국, 온프레미스 서버 또는 네트워크 게이트웨이는 (사용 사례(205)의 장치 및 엔드포인트와 통신할 때 낮은 지연 값을 갖는 클라우드로부터 "먼") "파 에지" 계층 내에 있는 것으로 고려될 수 있다. "클로즈(close)", "로컬(local)", "니어(near)", "중간(middle)" 또는 "파(far)" 에지를 구성하는 특정 네트워크 계층의 다른 분류는 지연, 거리, 네트워크 홉 수 또는 네트워크 계층(200-240) 중 어느 하나의 소스에서 측정된 다른 측정 가능한 특성에 기초할 수 있다.
다양한 사용 사례(205)는 에지 클라우드를 활용하는 다수 서비스로 인한, 인입 스트림으로부터의 사용 압력 하에 리소스에 액세스할 수 있다. 짧은 지연 결과를 달성하기 위해, 에지 클라우드(110) 내에서 실행되는 서비스는 (a) 우선 순위(처리량 또는 지연) 및 서비스 품질(QoS)(예컨대, 자율 차량의 트래픽이 응답 시간 요건의 측면에서 온도 센서보다 더 높은 우선 순위를 가질 수도 있고, 또는 성능 감도/병목 현상이 애플리케이션에 따라 컴퓨팅/가속기, 메모리, 저장 또는 네트워크 리소스에 존재할 수 있음); (b) 신뢰성 및 탄력성(예컨대, 일부 입력 스트림은 작업을 수행해야 하고 트래픽은 미션 크리티컬 신뢰성으로 라우팅되어야 하며, 반면에 다른 일부 입력 스트림은 애플리케이션에 따라 간헐적인 오류를 허용할 수 있음) 및 (c) 물리적 제약(예컨대, 전력, 냉각 및 폼 팩터) 측면에서 다양한 요건의 균형을 유지한다.
이들 사용 사례에 대한 엔드투엔드 서비스 뷰는 서비스 흐름의 개념을 포함하고 트랜잭션과 연관된다. 트랜잭션은 리소스, 워크로드, 워크플로, 및 비즈니스 기능 및 비즈니스 수준 요건에 대한 관련 서비스뿐만 아니라 서비스를 이용하는 엔터티에 대한 전체 서비스 요구 사항을 자세히 설명한다. 설명된 "조건"에 따라 실행되는 서비스는 서비스 수명 동안 트랜잭션에 대한 실시간 및 런타임 계약 준수를 보장하는 방식으로 각 계층에서 관리될 수 있다. 트랜잭션의 구성 요소가 SLA에 대한 동의를 누락한 경우, 시스템 전체(트랜잭션의 구성 요소)는 (1) SLA 위반의 영향을 이해하고 (2) 시스템의 다른 구성 요소를 보강하여 전체 트랜잭션 SLA를 재개하는 기능을 제공할 수 있으며, (3) 수정 단계를 구현할 수 있다.
따라서, 이러한 변형 및 서비스 특징을 염두에 두고, 에지 클라우드(110) 내의 에지 컴퓨팅은 사용 사례(205)의 다수 애플리케이션(예컨대, 객체 추적, 비디오 감시, 연결된 차량 등)을 제공하고 이에 응답하는 능력을 실시간 또는 거의 실시간으로 제공할 수 있으며, 이들 다수의 애플리케이션에 대한 초저지연 요건을 만족한다. 이들 이점은 지연이나 다른 제한으로 인해 기존 클라우드 컴퓨팅을 활용할 수 없는 완전히 새로운 종류의 애플리케이션(가상 네트워크 기능(VNF), FaaS(Function as a Service), EaaS(Edge as a Service), 표준 프로세스 등)을 가능하게 한다.
그러나, 에지 컴퓨팅의 장점에는 다음과 같은 주의 사항이 있다. 에지에 위치한 장치는 종종 리소스가 제한되어 있으므로 에지 리소스 사용에 대한 압박이 있다. 일반적으로 이 문제는 다수의 사용자(테넌트) 및 장치에서 사용할 메모리 및 저장 리소스의 풀링을 통해 해결된다. 에지는 전력 및 냉각이 제한될 수 있으므로 전력 사용량은 가장 많은 전력을 소비하는 애플리케이션에서 고려해야 한다. 이들 풀링된 메모리 리소스에는 고유한 전원-성능 트레이드오프가 있을 수 있는데, 이들 중 다수가 더 많은 전력이 더 큰 메모리 대역폭을 필요로 하는 새로운 메모리 기술을 사용할 가능성이 높기 때문이다. 마찬가지로, 에지 위치가 무인일 수 있고 허가된 액세스가 필요할 수도 있기 때문에(예컨대, 제3자(third-party) 위치에 있는 경우), 하드웨어의 향상된 보안 및 신뢰 기반 기능도 필요하다. 이러한 문제는 다중 테넌트, 다중 소유자 또는 다중 액세스 설정의 에지 클라우드(110)에서 확대되는데, 여기서 특히 네트워크 사용량이 동적으로 변동하고 여러 이해 관계자, 사용 사례 및 서비스의 구성이 변경됨에 따라 서비스 및 애플리케이션이 많은 사용자에 의해 요청된다.
보다 일반적인 수준에서, 에지 컴퓨팅 시스템은 클라이언트 및 분산 컴퓨팅 장치로부터의 조정을 제공하는 에지 클라우드(110)(네트워크 계층(200-240))에서 작동하는 전술한 계층에서 임의의 수의 배치를 포함하는 것으로 설명될 수 있다. 하나 이상의 에지 게이트웨이 노드, 하나 이상의 에지 집선 노드(edge aggregation node) 및 하나 이상의 코어 데이터 센터는, 통신 서비스 제공자("telco " 또는 "TSP"), 사물 인터넷 서비스 제공자, 클라우드 서비스 제공자(CSP), 엔터프라이즈 엔티티 또는 기타 여러 엔티티에 의해 또는 이를 대신하여 에지 컴퓨팅 시스템의 구현을 제공하기 위해 네트워크의 계층들에 걸쳐 분산될 수 있다. 에지 컴퓨팅 시스템의 다양한 구현 및 구성은 서비스 목표를 만족하도록 조정될 때와 같이 동적으로 제공될 수 있다.
여기에 제공된 예들에 맞게, 클라이언트 컴퓨팅 노드는 데이터의 생산자 또는 소비자로서 통신할 수 있는 임의의 유형의 엔드포인트 구성요소, 장치, 기기, 또는 다른 것으로 구현될 수 있다. 또한, 에지 컴퓨팅 시스템에서 사용되는 "노드" 또는 "장치"라는 표시가 반드시 그러한 노드 또는 장치가 클라이언트 또는 에이전트/미니언/팔로워 역할로 동작한다는 것을 의미하는 것은 아니며, 오히려, 에지 컴퓨팅 시스템의 임의의 노드 또는 장치는 에지 클라우드(110)를 용이하게 하거나 사용하기 위해 개별 또는 연결된 하드웨어 또는 소프트웨어 구성을 포함하는 개별 엔티티, 노드 또는 서브시스템을 지칭한다.
따라서, 에지 클라우드(110)는 네트워크 계층들(210-230) 사이의 에지 게이트웨이 노드, 에지 집선 노드, 또는 다른 에지 컴퓨팅 노드에 의해 그리고 그 내에서 동작되는 네트워크 구성요소 및 기능적 특징으로부터 형성된다. 따라서, 에지 클라우드(110)는 본 명세서에서 논의되는 무선 액세스 네트워크(RAN) 가능 엔드포인트 장치(예컨대, 모바일 컴퓨팅 장치, IoT 장치, 스마트 장치 등)에 근접하게 위치하는 에지 컴퓨팅 및/또는 저장 리소스를 제공하는 임의의 유형의 네트워크로 구현될 수 있다. 즉, 에지 클라우드(110)는 모바일 캐리어 네트워크(예컨대, GSM(Global System for Mobile Communications) 네트워크, LTE(Long-Term Evolution) 네트워크, 5G/6G 네트워크 등)를 포함하는 서비스 제공자 코어 네트워크로의 진입점 역할을 하는 전통적인 네트워크 액세스 포인트와 엔드포인트 장치를 연결하면서, 저장부 및/또는 컴퓨팅 기능도 제공하는 "에지"로 구상될 수 있다. 다른 유형 및 형태의 네트워크 액세스(예컨대, Wi-Fi, 장거리 무선, 광 네트워크를 포함하는 유선 네트워크)도 이러한 3GPP 캐리어 네트워크 대신에 또는 이와 함께 사용될 수 있다.
에지 클라우드(110)의 네트워크 컴포넌트는 서버, 멀티-테넌트 서버, 어플라이언스 컴퓨팅 장치, 및/또는 임의의 다른 유형의 컴퓨팅 장치일 수 있다. 예를 들어, 에지 클라우드(110)는 하우징, 섀시, 케이스 또는 쉘을 포함하는 독립형 전자 장치인 어플라이언스 컴퓨팅 장치를 포함할 수 있다. 일부 상황에서 하우징은 사람이 운반 및/또는 운송할 수 있도록 휴대가능한 크기일 수 있다. 예시적인 하우징은 기기의 내용물을 부분적으로 또는 완전히 보호하는 하나 이상의 외부 표면을 형성하는 재료를 포함할 수 있으며, 여기서 보호는 날씨로부터의 보호, 위험한 환경으로부터의 보호(예컨대, EMI, 진동, 극한 온도) 및/또는 잠수 가능을 포함할 수 있다. 예시적인 하우징은 AC 전원 입력, DC 전원 입력, AC/DC 또는 DC/AC 컨버터(들), 전원 조절기, 변압기, 충전 회로, 배터리, 유선 입력 및/또는 무선 전원 입력과 같은 고정식 및/또는 휴대용 구현에 전력을 제공하는 전원 회로를 포함할 수 있다. 예시적인 하우징 및/또는 그 표면은 건물, 통신 구조(예컨대, 기둥, 안테나 구조 등) 및/또는 랙(예컨대, 서버 랙, 블레이드 마운트 등)과 같은 구조물에 부착할 수 있도록 장착 하드웨어를 포함하거나 이에 연결될 수 있다.). 예시적인 하우징 및/또는 그 표면은 하나 이상의 센서(예컨대, 온도 센서, 진동 센서, 광 센서, 음향 센서, 용량 센서, 근접 센서 등)를 지원할 수 있다. 하나 이상의 그러한 센서는 기기의 표면에 포함되거나, 운반되거나, 그렇지 않으면 표면에 내장되거나 및/또는 기기의 표면에 장착될 수 있다. 예시적인 하우징 및/또는 그 표면은 추진 하드웨어(예컨대, 바퀴, 프로펠러 등) 및/또는 관절식 하드웨어(예컨대, 로봇 팔, 회전 가능한 부속 장치 등)와 같은 기계적 연결을 지원할 수 있다. 일부 상황에서, 센서는 사용자 인터페이스 하드웨어(예컨대, 버튼, 스위치, 다이얼, 슬라이더 등)와 같은 모든 유형의 입력 장치를 포함할 수 있다. 일부 상황에서, 예시적인 하우징은 그 안에 포함, 운반, 내장되고/되거나 부착된 출력 장치를 포함한다. 출력 장치는 디스플레이, 터치스크린, 조명, LED, 스피커, I/O 포트(예컨대, USB) 등을 포함할 수 있다. 일부 상황에서, 에지 장치는 특정 목적(예컨대, 신호등)을 위해 네트워크에 제공되는 장치이지만, 다른 목적으로 활용될 수 있는 처리 및/또는 다른 기능이 있을 수 있다. 이러한 에지 장치는 다른 네트워크 장치와 독립적일 수 있으며 주 목적에 적합한 폼 팩터를 갖는 하우징을 구비할 수 있지만, 기본 작업을 방해하지 않는 다른 컴퓨팅 작업에도 사용할 수 있다. 에지 장치는 사물 인터넷 장치를 포함한다. 어플라이언스 컴퓨팅 장치는 장치 온도, 진동, 리소스 활용, 업데이트, 전원 문제, 물리적 및 네트워크 보안 등과 같은 로컬 문제를 관리하기 위한 하드웨어 및 소프트웨어 컴포넌트를 포함할 수 있다. 에지 클라우드(110)는 또한 하나 이상의 서버 및/또는 하나 이상의 멀티-테넌트 서버를 포함할 수 있다. 이러한 서버는 운영 체제를 포함하고 가상 컴퓨팅 환경을 구현할 수 있다. 가상 컴퓨팅 환경은 하나 이상의 가상 머신, 하나 이상의 컨테이너 등을 관리(예컨대, 생성, 배포, 파괴 등)하는 하이퍼바이저를 포함할 수 있다. 이러한 가상 컴퓨팅 환경은 하나 이상의 애플리케이션 및/또는 또는 다른 소프트웨어, 코드 또는 스크립트가 하나 이상의 다른 애플리케이션, 소프트웨어, 코드 또는 스크립트와 격리된 상태에서 실행될 수 있는 실행 환경을 제공한다.
도 3에서, 다양한 클라이언트 엔드포인트(310)(모바일 장치, 컴퓨터, 자율 차량, 비즈니스 컴퓨팅 장비, 산업 처리 장비 형태)는 엔드포인트 네트워크 집합의 유형에 특정한 요청 및 응답을 교환한다. 예를 들어, 클라이언트 엔드포인트(310)는 온프레미스 네트워크 시스템(332)을 통해 요청 및 응답(322)을 교환함으로써 유선 광대역 네트워크를 통해 네트워크 액세스를 얻을 수 있다. 모바일 컴퓨팅 장치와 같은 일부 클라이언트 엔드포인트(310)는 액세스 포인트(예컨대, 셀룰러 네트워크 타워)(334)를 통해 요청 및 응답(324)을 교환함으로써 무선 광대역 네트워크를 통해 네트워크 액세스를 얻을 수 있다. 자율 차량과 같은 일부 클라이언트 엔드포인트(310)는 거리에 위치한 네트워크 시스템(336)을 통해, 무선 차량 네트워크를 통해 요청 및 응답(326)에 대한 네트워크 액세스를 얻을 수 있다. 그러나, 네트워크 액세스의 유형에 관계없이, TSP는 트래픽 및 요청을 모으기 위해 에지 클라우드(110) 내에 집선 포인트(342, 344)를 배치할 수 있다. 따라서, 에지 클라우드(110) 내에서, TSP는 요청된 콘텐츠를 제공하기 위해 에지 집선 노드(340)에서와 같이 다양한 컴퓨팅 및 저장 리소스를 배치할 수 있다. 에지 집선 노드(340) 및 에지 클라우드(110)의 다른 시스템은, 웹사이트, 애플리케이션, 데이터베이스 서버 등에 대한 클라우드/데이터 센터로부터의 지연이 긴 요청을 수행하기 위해 백홀 네트워크(350)를 사용하는 클라우드 또는 데이터 센터(360)에 접속된다. 단일 서버 프레임워크에 배치된 것을 포함하여 에지 집선 노드(340) 및 집선 포인트(342, 344)의 추가적인 또는 통합된 인스턴스가 또한 에지 클라우드(110) 또는 TSP 인프라의 다른 영역 내에 존재할 수 있다.
도 4는 예시적인 이전 에지 컴퓨팅 아키텍처(400)를 도시한 것이다. 이전 에지 컴퓨팅 아키텍처(400)는 티어(402), 네트워크 지연부(404), 제한부(406), 멀티-테넌트 플랫폼(408), 다중 서비스 플랫폼(410), 저장 애플리케이션 프로그래밍 인터페이스(API)(412), 데이터 액세스 기능부(414), 데이터 생성 기능부(416) 및 인증되지 않은 저장 블록(418)을 포함한다.
도 4의 이전 에지 컴퓨팅 아키텍처(400)의 다수의 티어(402)는 이전 에지 컴퓨팅 아키텍처(400)에서 에지 장치 및 엔드포인트 장치의 위치를 나타낸다. 예를 들어, 티어(402)는 에지 위치로부터 장치(예컨대, 기지국, 게이트웨이, 네트워크 라우터, 엔드포인트(사용자) 장치 또는 기타 장치)의 거리를 나타낼 수 있다. 네트워크 지연부(404)는 네트워크 통신 거리로부터의 결과적인 지연 및 장치들 사이의 처리 시간 제약을 나타낸다. 일부 예에서, 네트워크 지연은 일반적으로 티어(402)에 걸쳐 밀리초 범위에 있다. 제한부(406)는 일부 네트워크 운영자 또는 서비스 제공자가 이전 에지 컴퓨팅 아키텍처(400)에서 가질 수 있는 제한을 나타낸다. 예를 들어, 제한부(406)는 에지 로케이션 구성, 컴퓨팅 유형, 메모리, 저장, 패브릭, 가속, 위치 티어, 보안 등에 기초할 수 있다.
이전 에지 컴퓨팅 아키텍처(400)는 멀티-테넌트 플랫폼(408), 다중 서비스 플랫폼(410), 저장 API(412), 데이터 액세스 기능부(414), 데이터 생성 기능부(416) 및 인증되지 않은 저장 블록(418)에 걸친 서비스 및 데이터의 이동을 예시한다. 일부 예에서, 저장 API(412)는 멀티-테넌트 플랫폼(408)에 포함된 테넌트 및 다중 서비스 플랫폼(410)에 포함된 서비스에 비인증 저장 블록(418)에 대한 액세스를 제공한다. 데이터 액세스 기능부(414)는 티어(402)의 데이터에 액세스하기 위해 멀티-테넌트 플랫폼(408)의 테넌트에 의해 사용된다. 데이터 생성 기능부(416)는 티어(402)에서 데이터를 생성하기 위해 다중 서비스 플랫폼(410)의 서비스에 의해 사용된다. 일부 예에서, 저장 API(412) 및 인증되지 않은 저장 블록(418)은 멀티-테넌트 플랫폼(408), 다중 서비스 플랫폼(410), 데이터 액세스 기능부(414) 및 데이터 생성 기능부(416)에 걸쳐 사용 가능하다.
비인증 저장 블록(418)이 이전 에지 컴퓨팅 아키텍처(400)의 티어(402)에 이용 가능하지만, 이전 에지 컴퓨팅 아키텍처(400)는 티어들(402)에 걸쳐 저장 블록을 검증하는 기능을 제공하지 않는다. 일부 실시예에서, 이전 에지 컴퓨팅 아키텍처(400)는 저장 API(412)를 사용하여 인증되지 않은 저장 블록(418)에 액세스한다. 그러나, 이전 에지 컴퓨팅 아키텍처(400)의 인증되지 않은 저장 블록(418)에 액세스하는 테넌트는 인증되지 않은 저장 블록(418)이 신뢰할 수 있는지 보증/검증할 수 없다. 일부 예들은, 인증되지 않은 저장 블록(418)에 서명하고 이들 서명을 저장부 자체에 저장하는 소프트웨어 솔루션을 포함할 수 있다(예컨대, 소프트웨어 스택이 데이터 서명 및 검증의 관리를 담당한다). 그러나, 소프트웨어 스택이 데이터 해싱 및 서명을 수행하면, 데이터의 세분성 수준에 따라 큰 오버헤드가 발생할 수 있다. 유사하게, 데이터의 데이터 검증을 추가로 수행하기 위해 소프트웨어 스택을 사용하면,TCO가 증가할 뿐만 아니라, 티어들(402) 사이의 네트워크 지연(404)이 높아진다.
도 5는 본 개시의 교시에 따라 구현된 예시적인 에지 컴퓨팅 네트워크(500)를 도시한 것이다. 에지 컴퓨팅 네트워크(500)는 예시적인 티어(502), 예시적인 네트워크 지연부(504), 예시적인 제한부(506), 예시적인 멀티-테넌트 플랫폼(508), 예시적인 다중 서비스 플랫폼(510), 예시적인 저장 API(512), 예시적인 데이터 액세스 기능부(514), 예시적인 데이터 생성 기능부(516), 예시적인 인증된 저장 블록(518) 및 예시적인 마이그레이션 기능부(520)를 포함한다.
예시적인 다중 티어(502)은 에지 컴퓨팅 네트워크(500)의 에지 장치 및 엔드포인트 장치의 위치를 포함한다. 예를 들어, 티어(502)는 에지 위치로부터 장치(예컨대, 기지국, 게이트웨이, 네트워크 라우터, 엔드포인트(사용자) 장치 또는 기타 장치)의 거리를 나타낼 수 있다. 네트워크 지연부(504)는 네트워크 통신 거리로부터의 지연 및 장치들 사이의 처리 시간 제약을 나타낸다. 일부 예에서, 네트워크 지연부(504)는 일반적으로 티어(502)에 걸쳐 밀리초 범위 내에 있다. 예시적인 제한부(506)는 일부 네트워크 운영자 또는 서비스 제공자가 에지 컴퓨팅 네트워크(500)에서 가질 수 있는 제한을 나타낸다. 예를 들어, 제한부(506)는 에지 로케이션 구성, 컴퓨팅 유형, 메모리, 저장, 패브릭, 가속, 위치 티어, 보안 등에 기초할 수 있다.
예시적인 에지 컴퓨팅 아키텍처(500)는 멀티-테넌트 플랫폼(508), 다중 서비스 플랫폼(510), 저장 API(512), 데이터 액세스 기능부(514), 데이터 생성 기능부(516) 및 인증된 저장 블록(518)에 걸친 서비스 및 데이터의 이동을 지원한다. 일부 예에서, 저장 API(512)는 비인증 저장 블록(518)에 액세스하기 위해 멀티-테넌트 플랫폼(508)의 테넌트 및 다중 서비스 플랫폼(510)의 서비스에 의해 사용될 수 있다. 도시된 예에서, 데이터 액세스 기능부(514)는 티어(502)의 데이터에 액세스하기 위해 멀티-테넌트 플랫폼(508)의 테넌트에 의해 사용된다. 도시된 예에서, 데이터 생성 기능부(516)는 티어(502)의 데이터를 생성하기 위해 다중 서비스 플랫폼(510)의 테넌트에 의해 사용된다. 일부 예에서, 저장 API(512) 및 인증된 저장 블록(518)은 멀티-테넌트 플랫폼(508), 다중 서비스 플랫폼(510), 데이터 액세스 기능부(514) 및 데이터 생성 기능부(516)에 걸쳐 사용 가능하다. 일부 예에서, 저장 API(512)는 인증된 저장 블록(518)을 관리하기 위해 저장 제어기(예컨대, 도 6과 관련하여 상세히 후술하는 예시적인 저장 제어기(602)를 포함한다.
예시적인 인증된 저장 블록(518)은 예시적인 티어(502)에 의해 액세스가능하다. 예시적인 저장 API(512)는 티어(502)에 걸쳐 인증된 저장 블록(518)을 검증하는데 사용될 수 있다. 예시적인 마이그레이션 기능부(520)는 에지 장치들에 걸쳐 인증된 저장 블록(518)을 마이그레이션하는 데 사용될 수 있다. 예를 들어, 인증된 저장 블록(518)은 제1 기지국으로부터 제2 기지국으로 마이그레이션될 수 있다. 일부 예에서, 저장 컨트롤러는 마이그레이션 기능(520)을 구현하기 위해 저장 API(512)를 실행할 수 있다. 일부 예에서, 인증된 저장 블록(518)은 멀티-테넌트 플랫폼(508) 및 멀티-테넌트 플랫폼(510)에서 저장 블록/저장 블록 그룹의 데이터를 인증하기 위한 하드웨어 가속기를 포함한다. 일부 예에서, 마이그레이션 기능(520)은 추가로 또는 대안적으로 저장 블록과 연관된 메타데이터와 함께 상이한 시스템/장치 사이에서 데이터의 저장 블록을 마이그레이션하기 위한 하드웨어 가속기를 포함한다.
도 6은 본 개시의 교시에 따라 구현된 예시적인 저장 제어기(602)의 블록도이다. 예시적인 저장 제어기(602)는 예시적인 테넌트 인터페이스(604), 예시적인 키 관리자(606), 예시적인 블록 관리자(608), 예시적인 애플리케이션 인터페이스(614), 예시적인 하드웨어 인터페이스(616), 예시적인 마이그레이션 핸들러(618)를 포함한다. 도시된 예에서, 저장 제어기(602)는 예시적인 키 데이터 저장소(610), 예시적인 블록 데이터 저장소(612), 예시적인 저장 장치(620, 622), 및 예시적인 컴퓨트 슬레드(624)와 통신한다.
예시적인 테넌트 인터페이스(604)는 도 5의 에지 컴퓨팅 네트워크(500)에서 상이한 테넌트의 테넌트 키 식별자를 키 관리자(606)에 제공한다. 일부 예들에서, 테넌트 인터페이스(604)는 식별자를 제공하기 위한 수단을 구현한다. 일부 예에서, 테넌트 인터페이스(604)는 도 5의 에지 컴퓨팅 네트워크(500)의 상이한 테넌트의 애플리케이션 키 식별자를 키 관리자(606)에 제공한다. 예시적인 테넌트 인터페이스(604)는 에지 컴퓨팅 네트워크(500)의 테넌트가 저장 제어기(602)와 통신하여 테넌트 키 식별자 및/또는 애플리케이션 키 식별자를 관리할 수 있게 한다. 예시적인 테넌트 인터페이스(604)는 테넌트 키 식별자 및 저장 블록 주소를 수신하여 에지 컴퓨팅 네트워크(500)의 테넌트의 테넌트 키 식별자와 연관시킨다. 일부 예에서, 예시적인 테넌트 인터페이스(604)는 애플리케이션 키 식별자 및 저장 블록 주소를 수신하여 에지 컴퓨팅 네트워크(500)의 테넌트에 대응하는 애플리케이션의 애플리케이션 키 식별자와 연관시킨다. 일부 예에서, 테넌트 인터페이스(604)는 저장 블록 주소와 함께 테넌트 키 식별자 및/또는 애플리케이션 키 식별자를 키 관리자(606)에 제공하여, 서로 다른 테넌트가 관련 저장 블록 주소의 데이터에 서명하고 그 데이터를 검증하는데 사용할 수 있도록 서명을 등록한다.
예시적인 키 관리자(606)는 에지 컴퓨팅 네트워크(500) 내 테넌트의 테넌트 키 식별자와 연관된 개인 키 및 공개 키를 등록한다. 일부 예에서, 키 관리자(606)는 개인 키 및 공개 키를 등록하기 위한 수단을 구현한다. 예시적인 키 관리자(606)는 개인 키 및 공개 키를 사용하여 저장 블록 주소 내의 데이터에 서명하고 이를 검증한다. 일부 예에서, 키 관리자(606)는 테넌트의 테넌트 키 식별자와 연관된 개인 키 및 공개 키를 사용하여 동일 테넌트와 연관된 저장 블록 그룹에 대한 데이터에 서명하고 이를 검증한다. 일부 예들에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 테넌트 키 식별자를 수신하고, 테넌트 키 식별자와 연관되는 개인 키 및 공개 키를 등록한다. 일부 예에서, 다수의 공개 키와 개인 키가 테넌트 키 식별자에 등록된다. 일부 예에서, 키 관리자(606)는 블록 관리자(608)로부터 테넌트 키 식별자를 수신하고, 키 관리자(606)는 테넌트 키 식별자와 연관된 저장 블록 그룹의 저장 블록 주소의 데이터를 검증하는 데 사용되는 테넌트 키 식별자와 연관된 개인 키 및 공개 키를 식별한다. 일부 예에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 테넌트 키 식별자 및 저장 블록 주소를 수신하여, 등록된 개인 키와 등록된 공개 키, 테넌트 키 식별자, 및 저장 블록 주소를 연관시킨다. 일부 예에서, 하나의 테넌트는 다수의 애플리케이션을 가질 수 있으며, 각 애플리케이션은 애플리케이션 키 식별자를 포함한다. 일부 예에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 애플리케이션 키 식별자 및 저장 블록 주소를 수신하여, 등록된 개인 키와 등록된 공개 키, 애플리케이션 키 식별자, 및 저장 블록 주소를 연관시킨다. 일부 예에서, 키 관리자(606)는 블록 관리자(608)와 함께 작동하여 등록된 개인 키, 등록된 공개 키, 및 테넌트 키 식별자를 테넌트 인터페이스(604)로부터의 저장 블록 주소와 연관시킨다.
예시적인 블록 관리자(608)는 키 관리자(606)에 의해 제공된 테넌트 키 식별자 및 저장 블록 주소를 사용하여 저장 블록 그룹을 테넌트에 매핑한다. 예시적인 블록 관리자(608)는 테넌트의 저장 블록 주소와 연관되는 블록 그룹 식별자를 생성함으로써 저장 블록 그룹을 식별한다. 도시된 예에서, 저장 블록 그룹에 포함된 각각의 저장 블록은 상이한 데이터 파일을 포함할 수 있고, 블록 관리자(608)는 저장 블록의 데이터 파일을 저장 블록 그룹으로 그룹화한다. 예시적인 블록 관리자(608)는 블록 그룹 식별자 및 저장 블록 주소를 키 관리자(606)에 의해 제공되는 테넌트 키 식별자 및 현재 서명과 연관시킨다. 일부 예에서, 블록 관리자(608)는 블록 그룹 식별자 및 저장 블록 주소를 키 관리자(606)에 의해 제공된 애플리케이션 키 식별자 및 현재 서명과 연관시킨다. 예시적인 블록 관리자(608)는 예시적인 애플리케이션 인터페이스(614)를 사용하여 소프트웨어 스택 상의 애플리케이션으로부터 데이터 액세스 요청을 수신한다. 여기서 사용되는 바와 같이, 데이터 액세스 요청은 쓰기 요청(예컨대, 저장 블록에 데이터를 쓰기 위한 요청) 및/또는 읽기 요청(예컨대, 저장 블록으로부터 데이터를 읽기 위한 요청)을 포함할 수 있다. 일부 예들에서, 블록 관리자(608)는 서명 검증을 수행하기 위한 수단을 구현한다. 예시적인 블록 관리자(608)는 저장 블록 주소와 함께 테넌트 키 식별자 및/또는 애플리케이션 키 식별자를 사용하여 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행한다. 도시된 예에서, 블록 관리자(608)는 저장 블록 그룹의 블록 그룹 식별자와 연관된 하나의 서명을 사용하여 저장 블록 그룹에 대한 서명 검증을 수행한다. 본 명세서에 개시된 예에서, 블록 관리자(608)는 그룹에 대한 연관된 서명을 사용하여 저장 블록 그룹에 포함된 저장 블록과 연관된 복수의 파일을 검증한다.
일부 예들에서, 블록 관리자(608)는 데이터 액세스 요청을 수신하고, 데이터 액세스 요청이 쓰기 요청인지 또는 읽기 요청인지를 판단한다. 일부 예에서, 데이터 액세스 요청은 쓰기 요청 또는 읽기 요청(예컨대, write() 또는 read())을 식별하는 함수 호출을 포함한다. 쓰기 요청의 경우, 블록 관리자(608)는 쓰기 요청에서 테넌트 키 식별자 및 블록 주소(들)를 수신한다. 일부 예에서, 블록 관리자(608)는 쓰기 요청에서 애플리케이션 키 식별자 및 블록 주소(들)를 수신한다. 예시적인 블록 관리자(608)는 키 관리자(606)를 사용하여 쓰기 요청에 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키 및 공개 키를 식별한다. 일부 예들에서, 쓰기 요청은 쓰기 요청에 의해 식별된 저장 블록에 대한 서명이 업데이트되어야 하는지 여부를 나타내는 플래그 또는 비트(예컨대, 서명 업데이트 플래그)를 포함한다. 예시적인 블록 관리자(608)는 쓰기 요청이 쓰기 요청과 연관된 서명이 업데이트되어야 함을 나타내는 서명 업데이트 플래그를 포함하는지 여부를 판정한다. 일부 예들에서, 소프트웨어 스택 상의 애플리케이션은 저장 블록 그룹에 대한 서명 및 저장 블록 그룹의 해시를 특별히 재생성하도록 요구할 수 있다. 이러한 예에서, 쓰기 요청은 소프트웨어 스택 상의 애플리케이션이 저장 블록 그룹의 해시와 저장 블록 그룹에 대한 서명을 재생성하기를 원한다는 것을 나타내는 서명 업데이트 플래그를 포함한다. 쓰기 요청이 서명 업데이트에 대한 서명 업데이트 플래그를 포함하는 예에서, 블록 관리자(608)는 쓰기 요청에 포함된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키를 업데이트하고, 블록 관리자(608)는 업데이트된 개인 키를 키 관리자(606)에게 제공한다.
예시적인 블록 관리자(608)는 저장 블록 주소에 대한 블록 그룹 식별자의 맵을 사용하여 쓰기 요청에 제공된 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 예시적인 블록 관리자(608)는 식별된 블록 그룹 식별자와 연관된 저장 블록(들)을 식별한다. 일부 예에서, 블록 그룹 식별자는 저장 블록 및 쓰기 요청에 포함되지 않은 대응하는 저장 블록 주소를 포함하는 저장 블록 그룹과 연관된다. 예시적인 블록 관리자(608)는 쓰기 요청의 블록 그룹 식별자와 연관되는 것으로 식별된 저장 블록 그룹의 해시를 생성한다. 예시적인 블록 관리자(608)는 개인 키(키 관리자(606)를 사용하여 쓰기 요청에 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 원래 개인 키, 또는 업데이트된 개인 키)로 해시에 서명한다. 일부 예에서, 블록 관리자(608)는 하드웨어 회로를 사용하여 해시에 서명한다. 이러한 예에서, 블록 관리자(608)는, 아래에서 더 자세히 설명하는 바와 같이, 해시에 서명하기 위해 예시적인 하드웨어 인터페이스(616)를 사용하여 하드웨어 장치(예컨대, FPGA(field-programmable gate array), ASIC(application-specific integrated circuit) 등)에 액세스한다.
읽기 요청의 경우, 예시적인 블록 관리자(608)는 읽기 요청에서 테넌트 키 식별자 및 블록 주소(들)를 수신한다. 일부 예에서, 블록 관리자(608)는 읽기 요청에서 애플리케이션 키 식별자 및 블록 주소(들)를 수신한다. 예시적인 블록 관리자(608)는 저장 블록 주소에 대한 블록 그룹 식별자의 맵을 사용하여 읽기 요청에 제공된 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 예시적인 블록 관리자(608)는 식별된 블록 그룹 식별자와 연관된 저장 블록(들)을 식별한다. 일부 예에서, 블록 그룹 식별자는 저장 블록 및 읽기 요청에 포함되지 않은 대응하는 저장 블록 주소를 포함하는 저장 블록 그룹과 연관된다. 예시적인 블록 관리자(608)는 읽기 요청의 블록 그룹 식별자와 연관되는 것으로 식별된 저장 블록 그룹의 해시를 생성한다.
일부 예들에서, 읽기 요청은 읽기 요청이 인증/검증되어야 하는지를 나타내는 플래그 또는 비트(예컨대, 인증 플래그)를 포함한다. 예시적인 블록 관리자(608)는 읽기 요청이 저장 블록 그룹의 해시로부터 결과 데이터를 제공하기 전에 읽기 요청이 인증/검증되어야 함을 나타내는 인증 플래그를 포함하는지 여부를 판정한다. 읽기 요청이 인증/검증에 대한 인증 플래그를 포함하는 예에서, 블록 관리자(608)는 키 관리자(606)를 사용하여 읽기 요청에서 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키 및 공개 키를 식별한다. 예시적인 블록 관리자(608)는 키 관리자(606)를 사용하여 읽기 요청에서 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키의 서명으로 읽기 요청의 서명을 검증한다. 일부 예에서, 블록 관리자(608)는 하드웨어 회로를 사용하여 읽기 요청의 서명을 검증한다. 이러한 예에서, 블록 관리자(608)는, 아래에서 더 상세히 설명되는 바와 같이, 서명을 검증하기 위해 예시적인 하드웨어 인터페이스(616)를 사용하여 하드웨어 장치(예컨대, FPGA, ASIC 등)에 액세스한다. 예시적인 블록 관리자(608)가 읽기 요청으로부터의 서명을 검증한 것에 응답하여, 블록 관리자(608)는 데이터 증명의 결과와 함께 저장 블록 그룹의 해시로부터의 데이터를 소프트웨어 스택의 요청 애플리케이션에 제공한다.
예시적인 키 데이터 저장소(610)는 테넌트에 대한 테넌트 키 식별자 및 키 관리자(606)로부터의 관련 개인 키 및 공개 키를 저장한다. 일부 예에서, 키 관리자(606)는 등록된 개인 키 및 공개 키를 관련 테넌트 키 식별자와 함께 키 데이터 저장소(610)에 저장한다. 일부 예에서, 키 관리자(606)는 등록된 개인 키 및 공개 키를 키 관리자(606)로부터의 관련 애플리케이션 키 식별자와 함께 키 데이터 저장소(610)에 저장한다. 일부 예에서, 블록 관리자(608)는 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 서명이 업데이트될 필요가 있을 때 키 관리자(606)에게 통지한다. 그러한 예들에서, 키 관리자(606)는 테넌트 키 식별자 및/또는 애플리케이션 키 식별자에 대한 새로운 개인 키를 등록하고 키 데이터 저장소(610)에 새로운 개인 키를 저장한다. 일부 예들에서, 키 데이터 저장소(610)는 동기식 동적 랜덤 액세스 메모리(SDRAM), 동적 랜덤 액세스 메모리(DRAM), RAMBUS® 동적 랜덤 액세스 메모리(RDRAM®), 정적 랜덤 액세스 메모리(SRAM), 플래시 메모리 및/또는 기타 유형의 메모리 장치, 메모리 셀, 메모리 회로 등에 의해 구현될 수 있다.
예시적인 블록 데이터 저장소(612)는 연관된 테넌트 키 식별자, 저장 블록 주소, 및 현재 서명과 함께 블록 관리자(608)에 의해 식별되는 블록 그룹 식별자를 저장한다. 일부 예에서, 블록 관리자(608)는 블록 그룹 식별자를 식별하고 연관된 테넌트 키 식별자, 저장 블록 주소, 및 키 관리자(606)로부터의 현재 서명과 함께 블록 데이터 저장소(612)에 저장한다. 일부 예에서, 블록 관리자(608)는 블록 그룹 식별자를 식별하고 연관된 애플리케이션 키 식별자, 저장 블록 주소, 및 키 관리자(606)로부터의 현재 서명과 함께 블록 데이터 저장소(612)에 저장한다. 일부 예에서, 블록 관리자(608)는 애플리케이션 인터페이스(614)에 의해 수신된 데이터 액세스 요청을 검증하기 위해 블록 데이터 저장소(612)를 사용한다. 일부 예들에서, 블록 데이터 저장소(612)는 동기식 동적 랜덤 액세스 메모리(SDRAM), 동적 랜덤 액세스 메모리(DRAM), RAMBUS® 동적 랜덤 액세스 메모리(RDRAM®), 정적 랜덤 액세스 메모리(SRAM), 플래시 메모리 및/또는 기타 유형의 메모리 장치, 메모리 셀, 메모리 회로 등에 의해 구현될 수 있다.
예시적인 애플리케이션 인터페이스(614)는 소프트웨어 스택 상의 애플리케이션으로부터 데이터 액세스 요청을 수신한다. 일부 예들에서, 애플리케이션 인터페이스(614)는 데이터 액세스 요청을 수신하기 위한 수단을 구현한다. 일부 예에서, 애플리케이션 인터페이스(614)는 쓰기 요청 또는 읽기 요청을 나타내는 데이터 액세스 요청을 수신한다. 일부 예에서, 데이터 액세스 요청은 쓰기 요청 또는 읽기 요청(예컨대, write() 또는 read())을 식별하는 함수 호출을 포함한다. 일부 예들에서, 데이터 액세스 요청은 블록 관리자(608)가 데이터에 액세스하기 위해 읽거나 새로운 데이터를 쓰기 위해 저장 블록 주소(들)를 식별하기 위한 저장 블록 주소(들)를 포함한다. 예를 들어, 애플리케이션 인터페이스(614)는 쓰기 요청에 대한 "Write(@Block, Data, SignOnWrite)"를 수신할 수 있는데, 여기서 "@Block"은 저장 블록 주소이고, "Data"는 저장 블록에 기록할 데이터이고, "SignOnWrite"는 식별된 저장 블록 주소에 대한 서명을 업데이트해야 하는지 여부를 나타내는 서명 업데이트 플래그이다. 또한, 일부 예에서 애플리케이션 인터페이스(614)는 읽기 요청에 대한 "Read(@Block, ValidateOnRead)"를 수신할 수 있는데, 여기서 "@Block"은 저장 블록 주소이고, "ValidateOnRead"는 읽기 요청이 인증/검증되었는지 여부를 나타내는 인증 플래그이다. 일부 예들에서, 애플리케이션 인터페이스(614)는 소프트웨어 스택 상의 애플리케이션들로부터 마이그레이션 요청을 수신한다. 일부 예에서, 마이그레이션 요청은 마이그레이션될 저장 블록 그룹을 나타내는 블록 그룹 식별자를 포함한다. 일부 예에서, 마이그레이션 요청은 마이그레이션으로부터 저장 블록 그룹의 데이터를 수신할 저장 장치를 식별한다.
예시적인 하드웨어 인터페이스(616)는 예시적인 블록 관리자(608)에 의해 수행되는 데이터 서명 및 검증을 수행하기 위해 하드웨어 장치에 액세스한다. 도시된 예에서, 블록 관리자(608)는 하드웨어 장치(예컨대, FPGA, ASIC 등)를 사용하여, 데이터 서명 및 유효성 검사 중에 저장 블록 및 서명을 해시한다. 일부 예에서, 하드웨어 인터페이스(616)는 데이터 해싱 및 서명 해싱을 수행하기 위해 블록 관리자(608)가 하드웨어 회로에 액세스할 수 있게 한다. 도시된 예에서, 하드웨어 인터페이스(616)는 블록 관리자(608)가 하드웨어 장치에 액세스할 수 있게 함으로써, 저장 블록 및 서명의 해싱을 가속시켜 양호한 응답 시간을 제공할 수 있게 한다.
예시적인 마이그레이션 핸들러(618)는 예시적인 제1 저장 장치(620)로부터 예시적인 제2 저장 장치(622)로 저장 블록 그룹의 증명 데이터를 포함하는 대응하는 메타데이터와 함께 저장 블록 그룹의 데이터를 마이그레이션한다. 예를 들어, 마이그레이션 핸들러(618)는 데이터를 마이그레이션하기 위한 수단을 구현한다. 일부 예에서, 마이그레이션 핸들러(618)는 애플리케이션 인터페이스(614)로부터 마이그레이션 요청을 수신한다. 일부 예에서, 마이그레이션 핸들러(618)는 마이그레이션 요청에서 블록 그룹 식별자를 수신하고, 마이그레이션 핸들러(618)는 블록 관리자(608)로부터 블록 그룹과 연관된 저장 블록을 검색한다. 일부 예들에서, 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증 정보, 및 저장 블록 그룹에 대응하는 공개 키를 제1 저장 장치(620)로부터 제2 저장 장치(622)로 마이그레이션한다. 일부 예들에서, 제1 저장 장치(620) 및 제2 저장 장치(622)는 에지 컴퓨팅 네트워크(예컨대, 도 5의 예시적인 에지 컴퓨팅 네트워크(500)) 내 상이한 에지 위치에 있다. 예를 들어, 제1 저장 장치(620)는 제1 기지국일 수 있고, 제2 저장 장치(622)는 에지 컴퓨팅 네트워크 내 제2 기지국일 수 있다. 도시된 예에서, 저장 블록 그룹과 연관된 개인 키는 요청 저장 장치(예컨대, 제2 저장 장치(622))로 마이그레이션되지 않는다. 그러나, 추가적인 또는 대안적인 예에서, 개인 키는 마이그레이션 요청에 응답하여 마이그레이션 핸들러(618)에 의해 마이그레이션될 수 있다.
일부 예들에서, 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증 정보, 및 저장 블록 그룹들의 그룹에 대응하는 공개 키를 마이그레이션하기 위해 하드웨어 회로에 액세스한다. 이러한 예에서, 마이그레이션 핸들러(618)는 데이터의 마이그레이션 속도를 증가시키기 위해 하드웨어 인터페이스(616)를 사용하여 하드웨어 장치(예컨대, FPGA, ASIC 등)에 액세스한다. 일부 예들에서, 마이그레이션 핸들러(618)는 상이한 저장 시스템들 사이의 저장 블록 그룹의 증명 데이터를 포함하는 대응하는 메타데이터와 함께 저장 블록 그룹의 데이터를 마이그레이션한다. 일부 예들에서, 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증 정보, 및 저장 블록 그룹에 대응하는 공개 키를 제1 저장 장치(620)로부터 예시적인 컴퓨트 슬레드(624)로 그리고 그 반대로 마이그레이션할 수 있다.
저장 제어기(602)를 구현하는 예시적인 방식이 도 6에 도시되어 있지만, 도 4에 도시된 요소, 프로세스 및/또는 장치 중 하나 이상이 결합, 분할, 재배열, 생략, 제거 및/또는 다른 방식으로 구현될 수 있다. 또한, 도 6의 예시적인 테넌트 인터페이스(604), 예시적인 키 관리자(606), 예시적인 블록 관리자(608), 예시적인 애플리케이션 인터페이스(614), 예시적인 하드웨어 인터페이스(616), 마이그레이션 핸들러(618) 및/또는 더 일반적으로 예시적인 저장 제어기(602)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 따라서, 예를 들어, 예시적인 테넌트 인터페이스(604), 예시적인 키 관리자(606), 예시적인 블록 관리자(608), 예시적인 애플리케이션 인터페이스(614), 예시적인 하드웨어 인터페이스(616), 마이그레이션 핸들러(618) 및/또는 더 일반적으로 예시적인 저장 제어기(602)는 하나 이상의 아날로그 또는 디지털 회로(들), 논리 회로, 프로그램 가능한 프로세서(들), 프로그램 가능한 제어기(들), 그래픽 처리 장치(들)(GPU(s)), 디지털 신호 처리기(들)(DSP(s)), 주문형 집적 회로(들)(ASIC(s)), 프로그래머블 로직 장치(PLD(s)) 및/또는 필드 프로그래머블 로직 장치(들)(FPLD(s))에 의해 구현될 수 있다. 순수한 소프트웨어 및/또는 펌웨어 구현을 포함하는 것으로 본 특허의 임의의 장치 또는 시스템 청구항을 해석하는 경우, 예시적인 테넌트 인터페이스(604), 예시적인 키 관리자(606), 예시적인 블록 관리자(608), 예시적인 애플리케이션 인터페이스(614), 예시적인 하드웨어 인터페이스(616) 및/또는 마이그레이션 핸들러(618) 중 적어도 하나는 소프트웨어 및/또는 펌웨어를 포함하는 메모리, DVD(디지털 다목적 디스크), 컴팩트 디스크(CD), 블루레이(Blu-ray) 디스크 등을 포함하는 것으로 명시적으로 정의된다. 또한, 예시적인 저장 제어기(602)는 도 6에 도시된 것에 더하여 또는 그 대신에 하나 이상의 요소, 프로세스 및/또는 장치를 포함할 수 있고/있거나, 도시된 요소, 프로세스 및 장치 전부 또는 임의의 것 중 둘 이상을 포함할 수 있다. 본 명세서에 사용된 바와 같이, "통신 중"이라는 문구는 그 변형을 포함하여 하나 이상의 중간 구성요소를 통한 직접 통신 및/또는 간접 통신을 포함하며, 직접적인 물리적(예컨대, 유선) 통신 및/또는 지속적인 통신을 요구하지 않고, 오히려 주기적 간격, 예정된 간격, 비주기적 간격 및/또는 일회성 이벤트에서의 선택적 통신을 추가로 포함한다.
저장 제어기(602)를 구현하기 위한 예시적인 하드웨어 로직, 머신 판독 가능 명령어, 하드웨어 구현 상태 머신, 및/또는 이들의 임의의 조합을 나타내는 흐름도가 도 7 내지 도 10에 도시되어 있다. 머신 판독 가능 명령어는 도 11과 관련하여 아래에서 논의되는 예시적인 프로세서 플랫폼(1100)에서 보여지는 프로세서(1112)와 같은 컴퓨터 프로세서 및/또는 프로세서 회로에 의해 실행하기 위한 하나 이상의 실행 가능한 프로그램 또는 실행 가능한 프로그램의 부분(들)일 수 있다. 프로그램(들)은 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크, 또는 프로세서(1112)와 연관된 메모리와 같은 비일시적 컴퓨터 판독가능 저장 매체에 저장된 소프트웨어로 구현될 수 있지만, 전체 프로그램(들) 및/또는 그 일부는 대안적으로 프로세서(1112) 이외의 장치에 의해 실행될 수 있고/있거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 비록 예시적인 프로그램(들)이 도 7 내지 10에 도시된 흐름도를 참조하여 설명되지만, 예시적인 저장 제어기(602)를 구현하는 많은 다른 방법이 대안적으로 사용될 수 있다. 예를 들어, 블록의 실행 순서는 변경될 수 있고/있거나 설명된 블록의 일부가 변경, 제거 또는 결합될 수 있다. 이에 더하여 또는 이에 갈음하여, 블록의 일부 또는 전부는 소프트웨어나 펌웨어를 실행하지 않고 대응하는 동작을 수행하도록 구성된 하나 이상의 하드웨어 회로(예컨대, 별개의 및/또는 통합된 아날로그 및/또는 디지털 회로, FPGA, ASIC, 비교기, 연산 증폭기(op-amp), 논리 회로 등)에 의해 구현될 수 있다. 프로세서 회로는 서로 다른 네트워크 위치에 및/또는 하나 이상의 장치(예컨대, 단일 기계의 다중 코어 프로세서, 서버 랙에 분산된 다중 프로세서 등)에 로컬로 분산될 수 있다.
본 명세서에 설명된 머신 판독 가능 명령어는 압축 형식, 암호화된 형식, 단편화된 형식, 컴파일된 형식, 실행 가능한 형식, 패키지 형식 등 중 하나 이상으로 저장될 수 있다. 본 명세서에 설명된 머신 판독 가능 명령어는 기계 실행 가능한 명령어를 생성, 제조 및/또는 생산하는 데 사용될 수 있는 데이터 또는 데이터 구조(예컨대, 명령어의 일부, 코드, 코드 표현 등)로 저장될 수 있다. 예를 들어, 머신 판독 가능 명령어는 네트워크 또는 네트워크 집합(예컨대, 클라우드, 에지 장치 등)의 동일하거나 다른 위치에 위치한 하나 이상의 저장 장치 및/또는 컴퓨팅 장치(예컨대, 서버)에 단편화되어 저장될 수 있다. 머신 판독 가능 명령어는, 이들을 컴퓨팅 장치 및/또는 다른 머신에 의해 직접 판독 가능, 해석 가능, 및/또는 실행 가능하도록 하기 위해, 설치, 수정, 적응, 업데이트, 결합, 보완, 구성, 암호 해독, 압축 해제, 언패킹, 배포, 재할당, 컴파일 등 중 하나 이상을 요구할 수 있다. 예를 들어, 머신 판독 가능 명령어는 개별적으로 압축, 암호화 및 별도의 컴퓨팅 장치에 저장되는 다수 부분으로 저장될 수 있으며, 여기서 이들 부분은 해독, 압축 해제 및 결합될 때 본 명세서에 설명되는 것과 같은 프로그램을 함께 형성할 수 있는 하나 이상의 기능을 구현하는 실행 가능한 명령어 세트를 형성한다.
다른 예에서, 머신 판독 가능 명령어는 프로세서 회로에 의해 판독될 수 있는 상태로 저장될 수 있지만, 특정 컴퓨팅 장치 또는 기타 장치에서 명령어를 실행하기 위해 라이브러리(예컨대, 동적 링크 라이브러리(DLL)), 소프트웨어 개발 키트(SDK), 애플리케이션 프로그래밍 인터페이스(API) 등)의 추가를 요구한다. 다른 예에서, 머신 판독 가능 명령어 및/또는 대응하는 프로그램(들)이 전체적으로 또는 부분적으로 실행될 수 있기 전에 머신 판독 가능 명령어가 구성될 필요가 있을 수 있다(예컨대, 설정 저장, 데이터 입력, 네트워크 주소 기록 등). 따라서, 본 명세서에 사용된 머신 판독 가능 매체는, 정지 상태 또는 전송 중일 때, 머신 판독 가능 명령어 및/또는 프로그램(들)의 특정 형식 또는 상태에 관계없이 머신 판독 가능 명령어 및/또는 프로그램(들)을 포함할 수 있다.
본 명세서에 기술된 머신 판독가능 명령어는 임의의 과거, 현재 또는 미래 명령어 언어, 스크립팅 언어, 프로그래밍 언어 등으로 표현될 수 있다. 예를 들어, 머신 판독가능 명령어는 다음 언어 중 C, C++, Java, C#, Perl, Python, JavaScript, HTML(HyperText Markup Language), SQL(Structured Query Language), Swift 등 중 임의의 것을 사용하여 표현될 수 있다.
전술한 바와 같이, 도 7 내지 10의 예시적인 프로세스는, 하드 디스크 드라이브, 플래시 메모리, 읽기 전용 메모리, 컴팩트 디스크, 디지털 다목적 디스크, 캐시, 랜덤 액세스 메모리 및/또는 정보가 임의의 기간 동안(예컨대, 장기간, 영구적으로, 짧은 순단, 임시 버퍼링 및/또는 정보 캐싱 동안) 저장되는 임의의 다른 저장 장치 또는 저장 디스크와 같은 비일시적 컴퓨터 및/또는 머신 판독 가능 매체에 저장된 실행가능 명령어(예컨대, 컴퓨터 및/또는 머신 판독가능 명령어)를 사용하여 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, 비일시적 컴퓨터 판독 가능 매체라는 용어는 임의의 유형의 컴퓨터 판독 가능 저장 장치 및/또는 저장 디스크를 포함하고 전파 신호를 배제하고 전송 매체를 배제하도록 명시적으로 정의된다.
"포함" 및 "포괄"(및 이들의 모든 형태 및 시제)은 본 명세서에서 개방형 용어로 사용된다. 따라서, 청구항의 전문에 또는 모든 종류의 청구항 인용에서 임의의 형태의 "포함" 또는 "포괄"(예컨대, 포함하다, 포함하는, 갖는, 포괄하는 등)을 사용할 경우, 대응 청구항 또는 인용의 범위를 벗어나지 않고 추가적인 요소, 용어 등이 존재할 수 있는 것으로 이해해야 한다. 본 명세서에서 사용되는 바와 같이, "적어도"라는 용어는, 예를 들어, 청구항의 전문에서 전환 용어로 사용되는 경우, "포함하는" 및 "포함하는"이라는 용어가 개방형으로 끝나는 것과 동일한 방식으로 개방형이다. "및/또는"이라는 용어는, 예를 들어 A, B 및/또는 C와 같은 형태로 사용될 경우, (1) A 단독, (2) B 단독, (3) C 단독, (4) A와 B, (5) A와 C, (6) B와 C, 및 (7) A와 B와 C와 같이 A, B, C의 임의의 조합 또는 부분집합을 나타낸다. 구조, 구성요소, 항목, 객체 및/또는 사물을 설명하는 맥락에서 본 명세서에 사용되는 바와 같이, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A와 적어도 하나의 B 중 어느 하나를 포함하는 구현을 나타내고자 한다. 유사하게, 구조, 구성요소, 항목, 객체 및/또는 사물을 설명하는 맥락에서 본 명세서에서 사용되는 바와 같이, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A와 적어도 하나의 B 중 임의의 것을 나타내고자 한다. 프로세스, 명령어, 동작, 활동 및/또는 단계의 수행 또는 실행을 설명하는 맥락에서 사용되는 바와 같이, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A와 적어도 하나의 B 중 임의의 것을 포함하는 구현을 나타내고자 한다. 유사하게, 프로세스, 명령어, 동작, 활동 및/또는 단계의 수행 또는 실행을 설명하는 맥락에서 사용되는 바와 같이, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A와 적어도 하나의 B 중 임의의 것을 포함하는 구현을 나타내고자 한다.
본 명세서에 사용된 바와 같이, 단수형(예컨대, "하나" "제1", "제2" 등)은 복수를 배제하지 않는다. 본 명세서에 사용된 단수형의 개체는 하나 이상의 개체를 지칭한다. 단수 용어, "하나 이상" 및 "적어도 하나"는 본 명세서에서 상호교환가능하게 사용될 수 있다. 또한, 개별적으로 나열되어 있더라도, 복수의 수단, 요소 또는 방법 동작이 예를 들어 단일 유닛 또는 프로세서에 의해 구현될 수 있다. 또한, 개별 특징이 상이한 예 또는 청구범위에 포함될 수 있지만, 이들은 결합될 수도 있으며, 상이한 예 또는 청구범위에 포함된다고 해서 특징들의 조합이 실현가능하지 않다거나 유리하지 않다는 것을 의미하지는 않는다.
도 7은 도 6의 예시적인 저장 제어기(602)를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어(700)를 나타내는 흐름도이다. 도 7의 예시적인 명령어(700)는 예시적인 키 관리자(606)(도 6)가 테넌트 키 식별자와 함께 개인 키 및 공개 키를 등록하는 블록(702)에서 시작한다. 일부 예들에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 테넌트 키 식별자를 수신하고, 테넌트 키 식별자와 연관되는 개인 키 및 공개 키를 등록한다. 일부 예에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 테넌트 키 식별자 및 저장 블록 주소를 수신하여, 등록된 개인 키와 등록된 공개 키, 테넌트 키 식별자, 및 저장 블록 주소를 연관시킨다. 일부 예에서, 키 관리자(606)는 블록 관리자(608)와 함께 작동하여 등록된 개인 키, 등록된 공개 키, 및 테넌트 키 식별자를 테넌트 인터페이스(604)로부터의 저장 블록 주소와 연관시킨다. 일부 예에서, 하나의 테넌트는 다수의 애플리케이션을 가질 수 있으며, 각 애플리케이션은 애플리케이션 키 식별자를 포함한다. 일부 예에서, 키 관리자(606)는 테넌트 인터페이스(604)로부터 애플리케이션 키 식별자 및 저장 블록 주소를 수신하여, 등록된 개인 키와 등록된 공개 키, 애플리케이션 키 식별자, 및 저장 블록 주소를 연관시킨다.
블록(704)에서, 예시적인 블록 관리자(608)는 테넌트 키 식별자를 사용하여 저장 블록 그룹을 테넌트에 매핑한다. 예시적인 블록 관리자(608)는 테넌트의 저장 블록 주소와 연관되는 블록 그룹 식별자를 생성함으로써 저장 블록 그룹을 식별한다. 도시된 예에서, 저장 블록 그룹에 포함된 각각의 저장 블록은 상이한 데이터 파일을 포함할 수 있고, 블록 관리자(608)는 저장 블록의 데이터 파일을 저장 블록 그룹으로 그룹화한다. 예시적인 블록 관리자(608)는 블록 그룹 식별자 및 저장 블록 주소를 키 관리자(606)에 의해 제공되는 테넌트 키 식별자 및 현재 서명과 연관시킨다. 일부 예에서, 블록 관리자(608)는 블록 그룹 식별자 및 저장 블록 주소를 키 관리자(606)에 의해 제공된 애플리케이션 키 식별자 및 현재 서명과 연관시킨다.
블록(706)에서, 예시적인 블록 관리자(608)는 데이터 액세스 요청이 수신되는지 판정한다. 일부 예에서, 예시적인 블록 관리자(608)는 예시적인 애플리케이션 인터페이스(614)(도 6)를 사용하여 소프트웨어 스택 상의 애플리케이션으로부터 데이터 액세스 요청이 수신되는지 판정한다. 여기서 사용되는 바와 같이, 데이터 액세스 요청은 쓰기 요청(예컨대, 저장 블록에 데이터를 쓰기 위한 요청) 및/또는 읽기 요청(예컨대, 저장 블록으로부터 데이터를 읽기 위한 요청)을 포함할 수 있다. 예시적인 블록 관리자(608)가 데이터 액세스 요청이 수신되었다고 판정하면, 명령어(700)는 블록 관리자(608)가 데이터 액세스 요청에 대한 서명 검증을 수행하는 블록(708)으로 진행한다. 블록(706)에서 예시적인 블록 관리자(608)가 데이터 액세스 요청이 수신되지 않았다고 판정하면, 명령(700)은 마이그레이션 핸들러(618)(도 6)가 마이그레이션 요청이 검출되는지를 판정하는 블록(712)으로 진행한다.
블록(708)에서, 예시적인 블록 관리자(608)는 데이터 액세스 요청에 대한 서명 검증을 수행한다. 예시적인 블록 관리자(608)는 저장 블록 주소와 함께 테넌트 키 식별자 및/또는 애플리케이션 키 식별자를 사용하여 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행한다. 일부 예들에서, 블록 관리자(608)는 데이터 액세스 요청을 수신하고, 데이터 액세스 요청이 쓰기 요청인지 또는 읽기 요청인지를 판단한다. 일부 예에서, 데이터 액세스 요청은 쓰기 요청 또는 읽기 요청(예컨대, write() 또는 read())을 식별하는 함수 호출을 포함한다. 도 8의 예시적인 흐름도는, 쓰기 요청에 대한 서명 검증을 수행하도록 도 7의 블록(708)을 구현하기 위해 실행될 수 있는 예시적인 명령어(800)를 나타낸다. 도 9의 예시적인 흐름도는, 쓰기 요청에 대한 서명 검증을 수행하도록 블록(708)을 구현하기 위해 실행될 수 있는 예시적인 명령어(900)를 나타낸다. 도시된 예에서, 명령어(700)는 쓰기 요청을 위해 도 8의 명령어(800)를 선택하고/하거나 읽기 요청을 위해 도 9의 명령어(900)를 선택한다. 블록(710)에서, 예시적인 블록 관리자(608)는 데이터 액세스 요청이 완료되는지 판정한다. 예를 들어, 도 8의 예시적인 명령어(800) 또는 도 9의 예시적인 명령어(900)의 완료 후에, 블록 관리자(608)는 쓰기 요청 및/또는 읽기 요청에 대한 데이터 액세스 요청에 대한 서명 검증에 포함된 동작이 완료되었는지(예컨대, 블록 그룹 식별자가 식별되었는지, 해시가 생성되었는지 등)를 판정한다. 예시적인 블록 관리자(608)가 데이터 액세스 요청이 완료되었다고 판정하면, 명령어(700)는 종료된다. 블록(710)에서, 예시적인 블록 관리자(608)가 데이터 액세스 요청이 완료되지 않았다고 판정하면, 명령어(700)는 블록 관리자(608)가 데이터 액세스 요청에 대한 서명 검증을 수행하는 블록(708)으로 돌아간다.
블록(712)에서, 예시적인 마이그레이션 핸들러(618)(FIGURE 6)가 마이그레이션 요청이 수신되는지 판정한다. 일부 예에서, 마이그레이션 핸들러(618)는 마이그레이션 요청이 애플리케이션 인터페이스(614)(도 6)로부터 수신되는지 판정한다. 예시적인 마이그레이션 핸들러(618)가 마이그레이션 요청이 수신되었다고 판정하면, 명령어(700)는 마이그레이션 핸들러(618)가 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 마이그레이션하는 블록(714)으로 진행한다. 블록(712)에서 예시적인 마이그레이션 핸들러(618)가 마이그레이션 요청이 수신되지 않았다고 판정하면, 명령어(700)는 대기한다. 블록(714)에서, 예시적인 마이그레이션 핸들러(618)는 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 마이그레이션한다. 도 10의 예시적인 흐름도는 저장 블록 그룹의 데이터 및 대응하는 메타 데이터를 마이그레이션하기 위해 블록(714)을 구현하도록 실행될 수 있는 예시적인 명령어(1000)를 나타낸다. 예시적인 마이그레이션 핸들러(618)가 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 마이그레이션한 후에, 명령어(700)는 종료된다.
도 8은 도 6의 쓰기 요청을 처리하도록 예시적인 저장 제어기(602)를 구현하기 위해 실행될 수 있는 머신 판독 가능 명령어(800)를 나타내는 흐름도이다. 예를 들어, 도 8의 예시적인 명령어는 쓰기 요청을 위해 도 7의 블록(708)을 구현하는 데 사용될 수 있다. 예시적인 명령어(800)는 블록 관리자(608)(도 6)가 저장 블록(들)에 대한 쓰기 요청이 검출되는지 판정하는 블록(802)에서 시작한다. 예를 들어, 쓰기 요청은 애플리케이션 인터페이스(614)(도 6)로부터 수신될 수 있다. 예시적인 블록 관리자(608)가 저장 블록(들)에 대한 쓰기 요청이 검출되지 않는다고 판정하면, 도 8의 명령어(800)는 종료되고, 제어는 도 7의 명령어(700)로 복귀한다.
블록(802)에서 예시적인 블록 관리자(608)가 저장 블록(들)에 대한 쓰기 요청이 검출되었다고 판정하면, 명령어(800)는 블록 관리자(608)가 테넌트 키 식별자 및 블록 주소(들)에 액세스하는 블록(804)으로 진행한다. 일부 예에서, 블록 관리자(608)는 쓰기 요청에서 테넌트 키 식별자 및 블록 주소(들)를 수신한다. 일부 예에서, 블록 관리자(608)는 쓰기 요청에서 애플리케이션 키 식별자 및 블록 주소(들)를 수신한다. 예시적인 블록 관리자(608)는 키 관리자(606)를 사용하여 쓰기 요청에 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키 및 공개 키를 식별한다.
블록(806)에서, 예시적인 블록 관리자(608)는 서명 업데이트 플래그가 수신되는지 판정한다. 일부 예들에서, 쓰기 요청은 쓰기 요청에 의해 식별된 저장 블록에 대한 서명이 업데이트되어야 하는지 여부를 나타내는 플래그 또는 비트(예컨대, 서명 업데이트 플래그)를 포함한다. 예시적인 블록 관리자(608)는 쓰기 요청이 쓰기 요청과 연관된 서명이 업데이트되어야 함을 나타내는 서명 업데이트 플래그를 포함하는지 여부를 판정한다. 예시적인 블록 관리자(608)가 서명 업데이트 플래그가 수신되었다고 판정하면, 명령어(800)는 블록 관리자(608)가 개인 키에 대한 서명을 업데이트하는 블록(808)으로 진행한다. 블록(806)에서 예시적인 블록 관리자(608)가 서명 업데이트 플래그가 수신되었다고 판정하면, 명령어(800)는 블록 관리자(608)가 블록 주소(들)에 대한 블록 그룹 식별자를 식별하는 블록(810)으로 진행한다.
블록(808)에서, 예시적인 블록 관리자(608)는 개인 키에 대한 서명을 업데이트한다. 예를 들어, 블록 관리자(608)는 쓰기 요청에 포함된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키를 업데이트한다. 블록(810)에서, 블록 관리자(608)는 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 예를 들어, 블록 관리자(608)는 저장 블록 주소에 대한 블록 그룹 식별자의 맵을 사용하여 쓰기 요청에 제공된 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 블록(812)에서, 예시적인 블록 관리자(608)는 블록 그룹 식별자와 연관된 저장 블록(들)을 식별한다. 일부 예에서, 블록 그룹 식별자는 저장 블록 및 쓰기 요청에 포함되지 않은 대응하는 저장 블록 주소를 포함하는 저장 블록 그룹과 연관된다.
블록(814)에서, 예시적인 블록 관리자(608)는 식별된 전하 블록(들)의 해시를 생성한다. 예를 들어, 블록 관리자(608)는 쓰기 요청의 블록 그룹 식별자와 연관되는 것으로 식별된 저장 블록 그룹의 해시를 생성한다. 블록(816)에서, 예시적인 블록 관리자(608)는 개인 키로 해시에 서명한다. 예시적인 블록 관리자(608)는 개인 키(키 관리자(606)를 사용하여 쓰기 요청에 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 원래 개인 키, 또는 업데이트된 개인 키)로 해시에 서명한다. 일부 예에서, 블록 관리자(608)는 하드웨어 회로를 사용하여 해시에 서명한다. 이러한 예에서, 블록 관리자(608)는, 해시에 서명하기 위해 예시적인 하드웨어 인터페이스(616)를 사용하여 하드웨어 장치(예컨대, FPGA, ASIC 등)에 액세스한다.
블록(818)에서, 예시적인 키 관리자(606)는 키 데이터 저장소(610)(도 6)에 서명을 저장한다. 일부 예에서, 블록 관리자(608)는 쓰기 요청에 기초하여, 테넌트 키 식별자 및/또는 애플리케이션 키 식별자에 대한 업데이트된 개인 키를 제공한다. 예시적인 키 관리자(606)는 해시에 사용된 서명을 키 데이터 저장소(610)에 저장한다. 키 관리자(606)가 키 데이터 저장소(610)에 서명을 저장한 후, 명령어(800)는 종료되고, 제어는 도 7의 명령어(700)로 돌아간다.
도 9는 읽기 요청을 처리하도록 도 6의 예시적인 저장 제어기(602)를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어(900)를 나타내는 흐름도이다. 예시적인 명령어(900)는 읽기 요청을 위해 도 7의 블록(708)을 구현하도록 실행될 수 있다. 예시적인 명령어(900)는 블록 관리자(608)가 저장 블록(들)에 대한 읽기 요청이 검출되는지 판정하는 블록(902)에서 시작한다. 예를 들어, 읽기 요청은 예시적인 애플리케이션 인터페이스(614)(도 6)로부터 수신될 수 있다. 예시적인 블록 관리자(608)가 저장 블록(들)에 대한 읽기 요청이 검출되지 않았다고 판정하면, 도 9의 명령어(900)는 종료되고, 제어는 도 7의 명령어(700)로 복귀한다.
블록(902)에서 예시적인 블록 관리자(608)가 저장 블록(들)에 대한 읽기 요청이 검출되었다고 판정하면, 명령어(900)는 블록 관리자(608)가 테넌트 키 식별자 및 블록 주소(들)에 액세스하는 블록(904)으로 진행한다. 일부 예에서, 블록 관리자(608)는 읽기 요청에서 애플리케이션 키 식별자 및 블록 주소(들)를 수신한다. 블록(906)에서, 블록 관리자(608)는 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 예를 들어, 블록 관리자(608)는 저장 블록 주소에 대한 블록 그룹 식별자의 맵을 사용하여 읽기 요청에 제공된 블록 주소(들)에 대한 블록 그룹 식별자를 식별한다. 블록(908)에서, 예시적인 블록 관리자(608)는 블록 그룹 식별자와 연관된 저장 블록(들)을 식별한다. 일부 예에서, 블록 그룹 식별자는 저장 블록 및 읽기 요청에 포함되지 않은 대응하는 저장 블록 주소를 포함하는 저장 블록 그룹과 연관된다. 블록(910)에서, 예시적인 블록 관리자(608)는 식별된 전하 블록(들)의 해시를 생성한다.
블록(912)에서, 블록 관리자(608)는 인증 플래그가 수신되는지 판정한다. 예를 들어, 블록 관리자(608)는 읽기 요청이 저장 블록 그룹의 해시로부터 결과 데이터를 제공하기 전에 읽기 요청이 인증/검증되어야 함을 나타내는 인증 플래그를 포함하는지 여부를 판정한다. 예시적인 블록 관리자(608)가 인증 플래그가 수신되었다고 판정하면, 명령어(900)는 블록 관리자(608)가 서명을 검증하는 블록(914)으로 진행한다. 일부 예에서, 블록 관리자(608)는 키 관리자(606)를 사용하여 읽기 요청에서 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키 및 공개 키를 식별한다. 예시적인 블록 관리자(608)는 키 관리자(606)를 사용하여 읽기 요청에서 제공된 테넌트 키 식별자 및/또는 애플리케이션 키 식별자와 연관된 개인 키의 서명으로 읽기 요청의 서명을 검증한다. 일부 예에서, 블록 관리자(608)는 하드웨어 회로를 사용하여 읽기 요청의 서명을 검증한다. 이러한 예에서, 블록 관리자(608)는, 서명을 검증하기 위해 예시적인 하드웨어 인터페이스(616)를 사용하여 하드웨어 장치(예컨대, FPGA, ASIC 등)에 액세스한다. 블록(912)에서 블록 관리자(608)가 인증 플래그가 수신되지 않았다고 판정하면, 명령어(900)는 블록(918)으로 진행한다.
블록(916)에서, 예시적인 블록 관리자(608)는 서명이 유효한지 판정한다. 예시적인 블록 관리자(608)가 서명이 유효하다고 판정하면, 명령어(900)는 블록(918)으로 진행한다. 블록(918)에서, 예시적인 블록 관리자(608)는 블록 데이터 및 데이터 증명의 결과를 제공한다. 블록(918)에서, 블록 관리자(608)는 저장 블록 그룹의 해시로부터의 데이터를 데이터 증명의 결과와 함께 소프트웨어 스택의 요청 애플리케이션에 제공한다. 예시적인 블록 관리자(608)가 블록 데이터 및 데이터 증명의 결과를 제공한 후, 도 9의 명령어(900)는 종료되고, 제어는 도 7의 명령어(700)로 복귀한다. 블록(916)에서 예시적인 블록 관리자(608)가 서명이 유효하지 않다고 판정하면, 명령어(900)는 블록 관리자(608)가 블록 데이터를 제공하지 않는 블록(920)으로 진행한다. 예시적인 블록 관리자(608)가 블록 데이터를 제공하지 않으면, 도 9의 명령어(900)는 종료되고, 제어는 도 7의 명령어(700)로 복귀한다.
도 10은 마이그레이션 요청을 처리하도록 도 6의 예시적인 저장 제어기(602)를 구현하기 위해 프로세서에 의해 실행될 수 있는 머신 판독 가능 명령어(1000)를 나타내는 흐름도이다. 예시적인 명령어(1000)는 도 7의 블록(714)을 구현하도록 실행될 수 있다. 예시적인 명령어(1000)는 마이그레이션 핸들러(618)(도 6)가 마이그레이션될 블록 그룹 식별자에 액세스하는 블록(1002)에서 시작한다. 블록(1004)에서, 예시적인 마이그레이션 핸들러(618)는 데이터를 수신할 저장 장치를 식별한다. 예를 들어, 마이그레이션 핸들러(618)는 마이그레이션 요청으로부터 데이터를 수신할 저장 장치를 식별한다. 일부 예에서, 마이그레이션 요청은 데이터를 수신할 저장 장치의 식별자를 포함한다. 또는, 예시적인 마이그레이션 핸들러(618)는 마이그레이션 요청이 온 저장 장치를 데이터를 수신하기 위한 저장 장치로 식별할 수 있다.
블록(1006)에서, 예시적인 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록(들)을 식별한다. 블록(1008)에서, 예시적인 마이그레이션 핸들러(618)는 식별된 저장 블록, 현재의 인증 데이터, 및 공개 키를 식별된 저장 장치로 마이그레이션한다. 일부 예들에서, 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증 정보, 및 저장 블록 그룹에 대응하는 공개 키를 제1 저장 장치(예컨대, 예시적인 제1 저장 장치(620))로부터 제2 저장 장치(예컨대, 예시적인 제2 저장 장치(622))로 마이그레이션한다. 도시된 예에서, 저장 블록 그룹과 연관된 개인 키는 요청 저장 장치(예컨대, 제2 저장 장치(622))로 마이그레이션되지 않는다. 그러나, 추가적인 또는 대안적인 예에서, 개인 키는 마이그레이션 요청에 응답하여 마이그레이션 핸들러(618)에 의해 마이그레이션될 수 있다. 일부 예들에서, 마이그레이션 핸들러(618)는 블록 그룹 식별자와 연관된 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증 정보, 및 저장 블록 그룹들의 그룹에 대응하는 공개 키를 마이그레이션하기 위한 하드웨어 회로에 액세스한다. 이러한 예에서, 마이그레이션 핸들러(618)는 데이터의 마이그레이션 속도를 증가시키기 위해 하드웨어 인터페이스(616)(도 6)를 사용하여 하드웨어 장치(예컨대, FPGA, ASIC 등)에 액세스한다. 마이그레이션 핸들러(618)는 식별된 저장 블록, 현재 인증 데이터 및 공개 키를 식별된 저장 장치로 마이그레이션한 후, 도 10의 명령어(1000)가 종료되고, 제어는 도 7의 명령어(700)로 복귀한다.
도 11은 도 6의 저장 제어기(602)를 구현하도록 도 7 내지 10의 명령어를 실행하도록 구성된 예시적인 처리 플랫폼(1100)의 블록도이다. 프로세서 플랫폼(1100)은, 예를 들어, 서버, 개인용 컴퓨터, 워크스테이션, 셀프러닝 머신(예컨대, 신경망), 모바일 장치(예컨대, 휴대폰, 스마트 폰, iPadTM와 같은 태블릿), PDA(Personal Digital Assistant), 인터넷 기기, DVD 플레이어, CD 플레이어, 디지털 비디오 레코더, 블루레이(Blu-ray) 플레이어, 게임 콘솔, 개인 비디오 레코더, 셋톱 박스, 헤드셋 또는 기타 웨어러블 장치, 또는 다른 유형의 컴퓨팅 장치일 수 있다.
도시된 예의 프로세서 플랫폼(1100)은 프로세서(1112)를 포함한다. 도시된 예의 프로세서(1112)는 하드웨어이다. 예를 들어, 프로세서(1112)는 임의의 원하는 제품군 또는 제조업체의 하나 이상의 집적 회로, 논리 회로, 마이크로프로세서, GPU, DSP, 또는 제어기에 의해 구현될 수 있다. 하드웨어 프로세서는 반도체 기반(예컨대, 실리콘 기반) 장치일 수 있다. 이 예에서, 프로세서는 예시적인 테넌트 인터페이스(604), 예시적인 키 관리자(606), 예시적인 블록 관리자(608), 예시적인 애플리케이션 인터페이스(614), 예시적인 하드웨어 인터페이스(616), 예시적인 마이그레이션 핸들러(618)를 포함한다.
도시된 예의 프로세서(1112)는 로컬 메모리(1113)(예컨대, 캐시)를 포함한다. 도시된 예의 프로세서(1112)는 버스(1118)를 통해 휘발성 메모리(1114) 및 비휘발성 메모리(1116)를 포함하는 메인 메모리와 통신한다. 휘발성 메모리(1114)는 SDRAM(Synchronous Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), RDRAM®(RAMBUS® Dynamic Random Access Memory) 및/또는 임의의 다른 유형의 액세스 메모리 장치에 의해 구현될 수 있다. 비휘발성 메모리(1116)는 플래시 메모리 및/또는 임의의 다른 원하는 유형의 메모리 장치에 의해 구현될 수 있다. 메인 메모리(1114, 1116)에 대한 액세스는 메모리 제어기에 의해 제어된다.
도시된 예의 프로세서 플랫폼(1100)은 또한 인터페이스 회로(1120)를 포함한다. 인터페이스 회로(1120)는 이더넷 인터페이스, USB(Universal Serial Bus), 블루투스(Bluetooth®) 인터페이스, 근거리 통신(NFC) 인터페이스, 및/또는 PCI 익스프레스 인터페이스와 같은 임의의 유형의 인터페이스 표준에 의해 구현될 수 있다. 이에 더하여 또는 이에 갈음하여, 일부 예에서, 인터페이스 회로(1120)는 예시적인 테넌트 인터페이스(604) 및 예시적인 애플리케이션 인터페이스(614)를 구현할 수 있다.
도시된 예에서, 하나 이상의 입력 장치(1122)가 인터페이스 회로(1120)에 접속된다. 입력 장치(들)(1122)는 사용자가 데이터 및/또는 명령어를 프로세서(1112)에 입력할 수 있게 한다. 입력 장치(들)은, 예를 들어 오디오 센서, 마이크로폰, 카메라(스틸 또는 비디오), 키보드, 버튼, 마우스, 터치스크린, 트랙 패드, 트랙볼 및/또는 음성 인식 시스템에 의해 구현될 수 있다.
하나 이상의 출력 장치(1124) 또한 도시된 예의 인터페이스 회로(1120)에 접속된다. 출력 장치(1124)는, 예를 들어, 디스플레이 장치(예컨대, 발광 다이오드(LED), 유기 발광 다이오드(OLED), 액정 디스플레이(LCD), 음극선관 디스플레이(CRT), IPS(In-Place Switching) 디스플레이, 터치스크린 등), 촉각 출력 장치 및/또는 스피커에 의해 구현될 수 있다. 따라서, 도시된 예의 인터페이스 회로(1120)는 일반적으로 그래픽 드라이버 카드, 그래픽 드라이버 칩 및/또는 그래픽 드라이버 프로세서를 포함한다.
도시된 예의 인터페이스 회로(1120)는 또한, 네트워크(1126)를 통해 외부 머신(예컨대, 임의의 종류의 컴퓨팅 장치)과 데이터의 교환을 용이하게 하기 위해 송신기, 수신기, 트랜시버, 모뎀, 주거용 게이트웨이, 무선 액세스 포인트, 및/또는 네트워크 인터페이스와 같은 통신 장치를 포함한다. 통신은, 예를 들면 이더넷 접속, DSL(디지털 가입자 회선) 접속, 전화선 접속, 동축 케이블 시스템, 위성 시스템, 현장 무선 시스템, 셀룰러 전화 시스템 등을 통해 이루어질 수 있다.
도시된 예의 프로세서 플랫폼(1100)은 또한 소프트웨어 및/또는 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치(1128)를 포함한다. 이러한 대용량 저장 장치(1128)의 예는 플로피 디스크 드라이브, 하드 디스크 드라이브, 컴팩트 디스크 드라이브, 블루레이 디스크 드라이브, 독립 디스크의 중복 어레이(RAID) 시스템, 및 디지털 다목적 디스크(DVD) 드라이브를 포함한다. 이에 더하여 또는 이에 갈음하여, 일부 예에서 대용량 저장 장치(1128)는 예시적인 키 데이터 저장소(610) 및 예시적인 블록 데이터 저장소(612)를 구현할 수 있다.
도 7 내지 10에 나타낸 머신 실행가능 명령어(1132)는 대용량 저장 장치(1128), 휘발성 메모리(1114), 비휘발성 메모리(1116), 및/또는 CD 또는 DVD와 같은 제거 가능한 비일시적 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
도 11의 예시적인 컴퓨터 판독가능 명령어(1132)와 같은 소프트웨어를 제3자에게 배포하기 위한 예시적인 소프트웨어 배포 플랫폼(1205)을 도시한 블록도가 도 12에 도시되어 있다. 예시적인 소프트웨어 배포 플랫폼(1205)은 소프트웨어를 저장하고 다른 컴퓨팅 장치에 전송할 수 있는 임의의 컴퓨터 서버, 데이터 설비, 클라우드 서비스 등에 의해 구현될 수 있다. 제3자는 소프트웨어 배포 플랫폼을 소유 및/또는 운영하는 엔티티의 고객일 수 있다. 예를 들어, 소프트웨어 배포 플랫폼을 소유 및/또는 운영하는 엔티티는 도 11의 예시적인 컴퓨터 판독가능 명령어(1132)와 같은 소프트웨어의 개발자, 판매자, 및/또는 라이선스 제공자일 수 있다. 제3자는 사용 및/또는 재판매 및/또는 하위 라이선스를 위해 소프트웨어를 구매 및/또는 라이선스하는 소비자, 사용자, 소매업체, OEM 등일 수 있다. 도시된 예에서, 소프트웨어 배포 플랫폼(1205)은 하나 이상의 서버 및 하나 이상의 저장 장치를 포함한다. 저장 장치는 컴퓨터 판독 가능 명령어(1132)를 저장하는데, 이는 전술한 바와 같이 도 11의 예시적인 컴퓨터 판독 가능 명령어(1132)에 대응할 수 있다. 예시적인 소프트웨어 배포 플랫폼(1205)의 하나 이상의 서버는 네트워크(1210)와 통신하며, 이는 인터넷 및/또는 위에서 설명된 임의의 예시적인 네트워크(1126) 중 하나 이상에 대응할 수 있다. 일부 예에서, 하나 이상의 서버는 상거래의 일부로서 요청 당사자에게 소프트웨어를 전송하라는 요청에 응답한다. 소프트웨어의 배송, 판매 및/또는 라이선스에 대한 지불은 소프트웨어 배포 플랫폼의 하나 이상의 서버에 의해 및/또는 제3자 지불 개체를 통해 처리될 수 있다. 서버는 구매자 및/또는 라이선서가 소프트웨어 배포 플랫폼(1205)으로부터 컴퓨터 판독가능 명령어(1132)를 다운로드할 수 있게 한다. 예를 들어, 도 11의 예시적인 컴퓨터 판독 가능 명령어(1132)에 대응할 수 있는 소프트웨어가, 도 6의 저장 제어기(602)를 구현하기 위해 컴퓨터 판독가능 명령어(1132)를 실행하는, 예시적인 프로세서 플랫폼(1000)으로 다운로드될 수 있다. 일부 예에서, 소프트웨어 배포 플랫폼(1205)의 하나 이상의 서버는, 개선, 패치, 업데이트 등이 최종 사용자 장치의 소프트웨어에 배포 및 적용되도록 보장하기 위해, 소프트웨어(예컨대, 도 11의 예시적인 컴퓨터 판독 가능 명령어(1132))에 대한 업데이트를 주기적으로 제공, 전송 및/또는 강제한다.
전술한 내용으로부터, 멀티-테넌트 저장 블록 또는 블록 그룹을 인증하는 방법, 장치 및 제품이 개시되었음을 알 수 있을 것이다. 개시된 방법, 장치 및 제품은 상이한 테넌트 및 상이한 에지 위치에 걸쳐 데이터 검증을 제공한다. 특히, 개시된 방법, 장치 및 제품은 FPGA 또는 ASIC과 같은 하드웨어 메커니즘을 사용하여 동일한 테넌트/서비스와 관련된 저장 블록 그룹(예컨대, 파일 그룹)에 대한 멀티-블록 데이터 인증을 제공한다. 또한, 하드웨어 메커니즘은, 소프트웨어 스택이 데이터 인증을 그렇게 세밀하게 관리하는 것과 달리, 에지 클라우드 아키텍처의 지연을 최소화하면서 저장 블록 세분화 수준에서 데이터 인증을 관리하도록 구성된다.
멀티-테넌트 저장 블록 또는 블록 그룹을 인증하기 위한 예시적인 방법, 장치, 시스템 및 제품이 본 명세서에 개시되어 있다. 추가적인 예들 및 이들의 조합은 다음을 포함한다.
예 1은 블록 관리자와, 마이그레이션 핸들러(migration handler)를 포함하는 장치를 포함하며, 여기서 블록 관리자는, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹(a group of storage blocks) - 저장 블록 그룹은 서명과 연관되고, 서명은 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하고, 소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하며, 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행하고, 마이그레이션 핸들러는, 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하되, 메타데이터는 저장 블록 그룹의 증명 데이터를 포함한다.
예 2는, 키 관리자를 더 포함하되, 키 관리자가, 테넌트에 대한 테넌트 키 식별자 또는 테넌트의 제1 애플리케이션에 대한 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키를 등록하고, 개인 키 및 공개 키를 사용하여 저장 블록 그룹의 주소에 있는 데이터를 검증하는, 예 1에 정의된 장치를 포함한다.
예 3은, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 및 저장 블록 그룹의 주소를 키 관리자에 제공하는 테넌트 인터페이스를 더 포함하며, 키 관리자가 블록 관리자를 사용하여 저장 블록 그룹의 주소를 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관시키는, 예 1 내지 2 중 하나 이상에 정의된 장치를 포함한다.
예 4는, 데이터 액세스 요청이 쓰기 요청이고, 쓰기 요청에 응답하여, 블록 관리자가, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 - 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나는 쓰기 요청에서 제공됨 - 와 연관된 개인 키 및 공개 키를 식별하고, 소프트웨어 스택 상의 제2 애플리케이션이 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하며, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 개인 키를 업데이트하고 개인 키를 키 관리자에게 제공하며, 제1 저장 블록의 저장 블록 주소 - 저장 블록 주소는 쓰기 요청에 포함됨 - 와 연관된 저장 블록 그룹을 식별하고, 저장 블록 그룹의 해시를 생성하며, 개인 키로 해시에 서명하는, 예 1 내지 3 중 하나 이상에 정의된 장치를 포함한다.
예 5는, 데이터 액세스 요청이 읽기 요청이고, 읽기 요청에 응답하여 블록 관리자가, 제1 저장 블록의 저장 블록 주소 - 저장 블록 주소는 읽기 요청에 포함됨 - 와 연관된 저장 블록 그룹을 식별하고, 저장 블록 그룹의 해시를 생성하며, 소프트웨어 스택 상의 제2 애플리케이션이 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하고, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 - 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나는 키 관리자에 의해 제공됨 - 와 연관된 개인 키 및 공개 키에 기초하여 서명을 검증하며, 서명이 유효한 경우, 저장 블록 그룹의 해시로부터 소프트웨어 스택 상의 애플리케이션으로 데이터를 제공하는, 예 1 내지 4 중 하나 이상에 정의된 장치를 포함한다.
예 6은, 애플리케이션으로부터 데이터 액세스 요청을 수신하는 애플리케이션 인터페이스를 더 포함하되, 데이터 액세스 요청이 블록 관리자로 하여금 데이터 액세스 요청에서 표시된 제1 저장 블록과 연관된 저장 블록 그룹에 대해 서명 검증을 수행하고, 저장 블록 그룹이 제1 저장 장치에 포함되는, 예 1 내지 5 중 하나 이상에 정의된 장치를 포함한다.
예 7은, 마이그레이션 핸들러가 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증, 및 저장 블록 그룹에 대응하는 공개 키를 제2 저장 장치로 마이그레이션하는, 예 1 내지 6 중 하나 이상에 정의된 장치를 포함한다.
예 8은, 블록 관리자가 하드웨어 회로를 사용하여 데이터 액세스 요청의 서명을 검증하며, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 1 내지 7 중 하나 이상에 정의된 장치를 포함한다.
예 9는, 마이그레이션 핸들러가 하드웨어 회로를 사용하여 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하며, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 1 내지 8 중 하나 이상에 정의된 장치를 포함한다.
예 10은, 저장 블록 그룹이 복수의 파일을 포함하고, 블록 관리자가 서명을 사용하여 복수의 파일을 검증하는, 예 1 내지 9 중 하나 이상에 정의된 장치를 포함한다.
예 11은, 제1 저장 장치 및 제2 저장 장치가 에지 장치이고, 마이그레이션 핸들러가 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 저장 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 에지 컴퓨팅 네트워크의 대응하는 에지 위치의 제1 저장 장치와 제2 저장 장치 사이에서 마이그레이션하는, 예 1 내지 10 중 하나 이상에 정의된 장치를 포함한다.
예 12는 예 1 내지 11 중 하나 이상에 정의된 장치를 포함하는 에지 컴퓨팅 게이트웨이이다.
예 13은 예 1 내지 11 중 하나 이상에 정의된 장치를 포함하는 에지 노드이다.
예 14는 명령어를 포함하는 비일시적 컴퓨터 판독가능 저장 매체를 포함하며, 여기서 명령어는 실행될 경우에 적어도 하나의 프로세서로 하여금, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 저장 블록 그룹은 서명과 연관되고, 서명은 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하게 하고, 소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하게 하며, 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행하게 하고, 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 메타데이터는 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하게 한다
예 15는, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 테넌트에 대한 테넌트 키 식별자 또는 테넌트의 제1 애플리케이션에 대한 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키를 등록하게 하고, 개인 키 및 공개 키를 사용하여 저장 블록 그룹의 주소에 있는 데이터를 검증하게 하는, 예 14에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 16은, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 저장 블록 그룹의 주소를 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관시키게 하는, 예 14 내지 15 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 17은, 데이터 액세스 요청이 쓰기 요청이고, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 쓰기 요청에 응답하여, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 - 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나는 쓰기 요청에서 제공됨 - 와 연관된 개인 키 및 공개 키를 식별하게 하고, 소프트웨어 스택 상의 제2 애플리케이션이 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하게 하며, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 개인 키를 업데이트하고 개인 키를 키 관리자에게 제공하게 하며, 제1 저장 블록의 저장 블록 주소 - 저장 블록 주소는 쓰기 요청에 포함됨 - 와 연관된 저장 블록 그룹을 식별하게 하고, 저장 블록 그룹의 해시를 생성하게 하며, 개인 키로 해시에 서명하게 하는, 예 14 내지 16 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 18은, 데이터 액세스 요청이 읽기 요청이고, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 읽기 요청에 응답하여 제1 저장 블록의 저장 블록 주소 - 저장 블록 주소는 읽기 요청에 포함됨 - 와 연관된 저장 블록 그룹을 식별하게 하고, 저장 블록 그룹의 해시를 생성하게 하며, 소프트웨어 스택 상의 제2 애플리케이션이 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하게 하고, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 - 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나는 키 관리자에 의해 제공됨 - 와 연관된 개인 키 및 공개 키에 기초하여 서명을 검증하게 하며, 서명이 유효한 경우, 저장 블록 그룹의 해시로부터 소프트웨어 스택 상의 애플리케이션으로 데이터를 제공하게 하는, 예 14 내지 17 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
제19항에 있어서, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 애플리케이션으로부터 데이터 액세스 요청을 수신하게 하고, 데이터 액세스 요청은 적어도 하나의 프로세서로 하여금 데이터 액세스 요청에서 표시된 제1 저장 블록과 연관된 저장 블록 그룹에 대해 서명 검증을 수행하고, 저장 블록 그룹은 제1 저장 장치에 포함되는, 예 14 내지 18 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 20은, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증, 및 저장 블록 그룹에 대응하는 공개 키를 제2 저장 장치로 마이그레이션하게 하는, 예 14 내지 19 중 하나 이상에 정의된 장치를 포함한다.
예 21은, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 하드웨어 회로를 사용하여 데이터 액세스 요청의 서명을 검증하게 하고, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 14 내지 20 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 22는, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 하드웨어 회로를 사용하여 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하며, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 14 내지 21 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 23은, 저장 블록 그룹이 복수의 파일을 포함하고, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 서명을 사용하여 복수의 파일을 검증하게 하는, 예 14 내지 22 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 24는, 제1 저장 장치 및 제2 저장 장치가 에지 장치이고, 명령어가 실행될 경우에 적어도 하나의 프로세서로 하여금, 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 저장 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 에지 컴퓨팅 네트워크의 대응하는 에지 위치의 제1 저장 장치와 제2 저장 장치 사이에서 마이그레이션하게 하는, 예 14 내지 23 중 하나 이상에 정의된 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 25는, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 저장 블록 그룹은 서명과 연관되고, 서명은 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하는 단계와, 소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하는 단계와, 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행하는 단계와, 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 메타데이터는 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하는 단계를 포함하는, 방법을 포함한다.
예 26은, 테넌트에 대한 테넌트 키 식별자 또는 테넌트의 제1 애플리케이션에 대한 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키를 등록하는 단계와, 개인 키 및 공개 키를 사용하여 저장 블록 그룹의 주소에 있는 데이터를 검증하는 단계를 더 포함하는, 예 25에 정의된 방법을 포함한다.
예 27은, 저장 블록 그룹의 주소를 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관시키는, 예 25 내지 26 중 하나 이상에 정의된 방법을 포함한다.
예 28은, 데이터 액세스 요청이 쓰기 요청이고, 쓰기 요청에 응답하여, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키를 식별하는 단계 - 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나는 쓰기 요청에서 제공됨 - 와, 소프트웨어 스택 상의 제2 애플리케이션이 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하는 단계와, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 개인 키를 업데이트하는 단계와, 제1 저장 블록의 저장 블록 주소와 연관된 저장 블록 그룹을 식별하는 단계 - 저장 블록 주소는 쓰기 요청에 포함됨 - 와, 저장 블록 그룹의 해시를 생성하는 단계와, 개인 키로 해시에 서명하는 단계를 더 포함하는, 예 25 내지 27 중 하나 이상에 정의된 방법을 포함한다.
예 29는, 데이터 액세스 요청이 읽기 요청이고, 읽기 요청에 응답하여, 제1 저장 블록의 저장 블록 주소와 연관된 저장 블록 그룹을 식별하는 단계 - 저장 블록 주소는 읽기 요청에 포함됨 - 와, 저장 블록 그룹의 해시를 생성하는 단계와, 소프트웨어 스택 상의 제2 애플리케이션이 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하는 단계와, 소프트웨어 스택 상의 제2 애플리케이션이 플래그를 제공했다는 판정에 응답하여, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키에 기초하여 서명을 검증하는 단계와, 서명이 유효한 경우, 저장 블록 그룹의 해시로부터 소프트웨어 스택 상의 애플리케이션으로 데이터를 제공하는 단계를 더 포함하는, 예 25 내지 28 중 하나 이상에 정의된 방법을 포함한다.
예 30은, 애플리케이션으로부터 데이터 액세스 요청을 수신하는 단계와, 데이터 액세스 요청 수신에 응답하여, 데이터 액세스 요청에서 표시된 제1 저장 블록과 연관된 저장 블록 그룹에 대해 서명 검증을 수행하는 단계를 더 포함하되, 저장 블록 그룹은 제1 저장 장치에 포함되는, 예 25 내지 29 중 하나 이상에 정의된 방법을 포함한다.
예 31은, 저장 블록 그룹의 데이터, 저장 블록 그룹의 데이터의 인증, 및 저장 블록 그룹에 대응하는 공개 키를 제2 저장 장치로 마이그레이션하는, 예 25 내지 30 중 하나 이상에 정의된 방법을 포함한다.
예 32는, 하드웨어 회로를 사용하여 데이터 액세스 요청의 서명을 검증하는 단계를 더 포함하고, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 25 내지 31 중 하나 이상에 정의된 방법을 포함한다.
예 33은, 하드웨어 회로를 사용하여 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하는 단계를 더 포함하고, 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인, 예 25 내지 32 중 하나 이상에 정의된 방법을 포함한다.
예 34는, 저장 블록 그룹이 복수의 파일을 포함하고, 블록 관리자가 서명을 사용하여 복수의 파일을 검증하는, 예 25 내지 33 중 하나 이상에 정의된 방법을 포함한다.
예 35는, 제1 저장 장치 및 제2 저장 장치가 에지 장치이고, 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 저장 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 에지 컴퓨팅 네트워크의 대응하는 에지 위치의 제1 저장 장치와 제2 저장 장치 사이에서 마이그레이션하는 단계를 더 포함하는, 예 25 내지 34 중 하나 이상에 정의된 방법을 포함한다.
예 36은, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 저장 블록 그룹은 서명과 연관되고, 서명은 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하고, 소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하며, 테넌트에 대한 저장 블록 그룹의 맵에 기초하여 데이터 액세스 요청에 대한 서명 검증을 수행하고, 마이그레이션 핸들러는, 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 메타데이터는 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하기 위한 서명 검증을 수행하는 수단을 포함하는, 장치를 포함한다.
예 37은, 테넌트에 대한 테넌트 키 식별자 또는 테넌트의 제1 애플리케이션에 대한 애플리케이션 키 식별자 중 적어도 하나와 연관된 개인 키 및 공개 키를 등록하고, 개인 키 및 공개 키를 사용하여 저장 블록 그룹의 주소에 있는 데이터를 검증하기 위한 개인 키 및 공개 키 등록 수단을 더 포함하는, 예 36에 정의된 장치를 포함한다.
예 38은, 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나 및 저장 블록 그룹의 주소를 키 관리자에 제공하기 위한 식별자 제공 수단을 더 포함하며, 식별자 제공 수단은 블록 관리자를 사용하여 저장 블록 그룹의 주소를 테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나와 연관시키는, 예 36 내지 37 중 하나 이상에 정의된 장치를 포함한다.
예 39는, 애플리케이션으로부터 데이터 액세스 요청을 수신하는 데이터 액세스 요청 수신 수단을 더 포함하되, 데이터 액세스 요청은 서명 검증을 수행하는 수단으로 하여금 데이터 액세스 요청에서 표시된 제1 저장 블록과 연관된 저장 블록 그룹에 대해 서명 검증을 수행하게 하고, 저장 블록 그룹은 제1 저장 장치에 포함되는, 예 36 내지 38 중 하나 이상에 정의된 장치를 포함한다.
예 40은 예 1 내지 39 중 어느 하나를 구현하는 시스템이다.
예 41은 온프레미스 에지, 네트워크 액세스 에지, 또는 니어 에지 컴퓨팅 세팅 사이에 제공된 복수의 에지 컴퓨팅 노드 - 복수의 에지 컴퓨팅 노드는 예 1 내지 39 중 어느 하나를 수행하도록 구성됨 - 를 포함하는 멀티-티어 에지 컴퓨팅 시스템이다.
예 42는, 예 1 내지 39 중 어느 하나를 수행하도록 구성된, 상기 서비스 및 에지 컴퓨팅 시스템 내의 복수의 추가적인 서비스를 호스팅하는 서버로서 동작하는, 에지 컴퓨팅 노드이다.
예 43은 에지 컴퓨팅 시스템으로 하여금 예 1 내지 39 중 어느 하나를 구현할 수 있게 하는, 통신 네트워크를 제공 또는 작동하도록 구성된 네트워킹 및 프로세싱 컴포넌트를 포함하는 에지 컴퓨팅 네트워크이다.
예 44는 예 1 내지 39 중 어느 하나를 구현하는 에지 컴퓨팅 시스템으로서 구성된 네트워킹 및 프로세싱 컴포넌트를 포함하는 5G 네트워크 모바일 무선 통신 시스템이다.
예 45는 예 1 내지 39 중 어느 하나를 구현하도록 구성된, 에지 컴퓨팅 시스템에서 구현되고 작동가능한 가속 기능을 갖는 가속 하드웨어이다.
예 46은 예 1 내지 39 중 어느 하나를 구현하도록 구성된, 에지 컴퓨팅 시스템에서 구현되고 작동가능한 저장 기능을 갖는 저장 하드웨어이다.
예 47은 예 1 내지 39 중 어느 하나를 수행하는 로직, 모듈, 또는 회로를 포함하는 에지 컴퓨팅 시스템의 장치이다.
예 48은, 예 1 내지 39 중 어느 하나 또는 본 명세서에 기재된 다른 청구 대상을 이용하여, 본 명세서에서 논의한 사용사례를 호출 또는 수행하도록 동작가능한, 네트워크 기능, 가속 기능, 가속 하드웨어, 저장 하드웨어, 또는 계산 하드웨어 리소스의 양태를 포함하는 에지 컴퓨팅 시스템이다.
예 49는 예 1 내지 39 중 어느 하나 또는 본 명세서에 기재된 다른 청구 대상을 이용하여, 본 명세서에서 논의한 사용사례를 호출 또는 수행하도록 동작가능한, 3GPP 4G/LTE 또는 5G네트워크 기능에 따른 구성을 포함하는 모바일 무선 통신에 적응된 에지 컴퓨팅 시스템이다.
예 50는 예 1 내지 39 중 어느 하나 또는 본 명세서에 기재된 다른 청구 대상을 이용하여, 본 명세서에서 논의한 사용사례를 호출 또는 수행하도록 에지 컴퓨팅 시스템에서 구현되고 작동가능한 기능을 갖는 네트워킹 하드웨어, 가속 하드웨어, 저장 하드웨어, 또는 계산 하드웨어이다.
예 51은, 하나 이상의 프로세서에 의해 배치되고 실행될 경우에 하나 이상의 프로세서로 하여금 예 1 내지 39 중 어느 하나 또는 본 명세서에 기재된 다른 청구 대상을 이용하여, 본 명세서에서 논의한 사용사례를 호출 또는 수행하게 하는, 명령어를 포함하는 하나 이상의 컴퓨터 판독가능 매체 및 하나 이상의 프로세서를 포함하는 에지 컴퓨팅 시스템의 장치이다.
예 52는, 1 내지 39 중 어느 하나 또는 본 명세서에 기재된 다른 청구 대상을 이용하여, 본 명세서에서 논의한 사용사례를 호출 또는 수행하는, 수단, 로직, 모듈, 또는 회로를 포함하는 에지 컴퓨팅 시스템의 장치이다.
특정 예시적인 방법, 장치 및 제품이 본 명세서에 개시되었지만, 본 특허의 적용 범위는 이에 제한되지 않는다. 오히려, 본 특허는 본 특허 청구범위 내에 속하는 모든 방법, 장치 및 제품을 포함한다.
Claims (25)
- 장치로서,
블록 관리자와,
마이그레이션 핸들러(migration handler)를 포함하되,
상기 블록 관리자는,
테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹(a group of storage blocks) - 상기 저장 블록 그룹은 서명과 연관되고, 상기 서명은 상기 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하고,
소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하며,
상기 테넌트에 대한 상기 저장 블록 그룹의 상기 맵에 기초하여 상기 데이터 액세스 요청에 대한 서명 검증을 수행하고,
상기 마이그레이션 핸들러는, 상기 저장 블록 그룹의 데이터 및 대응하는 메타데이터를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하되, 상기 메타데이터는 상기 저장 블록 그룹의 증명 데이터(attestation data)를 포함하는,
장치.
- 제1항에 있어서,
키 관리자를 더 포함하되, 상기 키 관리자는,
상기 테넌트에 대한 상기 테넌트 키 식별자 또는 상기 테넌트의 제1 애플리케이션에 대한 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 개인 키 및 공개 키를 등록하고,
상기 개인 키 및 상기 공개 키를 사용하여 상기 저장 블록 그룹의 주소에 있는 데이터를 검증하는,
장치.
- 제2항에 있어서,
상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나 및 상기 저장 블록 그룹의 상기 주소를 상기 키 관리자에 제공하는 테넌트 인터페이스를 더 포함하고, 상기 키 관리자는 상기 블록 관리자를 사용하여 상기 저장 블록 그룹의 상기 주소를 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관시키는,
장치.
- 제2항에 있어서,
상기 데이터 액세스 요청은 쓰기 요청이고, 상기 쓰기 요청에 응답하여, 상기 블록 관리자는,
상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나 - 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나는 상기 쓰기 요청에서 제공됨 - 와 연관된 상기 개인 키 및 상기 공개 키를 식별하고,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하며,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 개인 키를 업데이트하고 상기 개인 키를 상기 키 관리자에게 제공하며,
상기 제1 저장 블록의 저장 블록 주소 - 상기 저장 블록 주소는 상기 쓰기 요청에 포함됨 - 와 연관된 상기 저장 블록 그룹을 식별하고,
상기 저장 블록 그룹의 해시를 생성하며,
상기 개인 키로 상기 해시에 서명하는,
장치.
- 제2항에 있어서,
상기 데이터 액세스 요청은 읽기 요청이고, 상기 읽기 요청에 응답하여 상기 블록 관리자는,
상기 제1 저장 블록의 저장 블록 주소 - 상기 저장 블록 주소는 상기 읽기 요청에 포함됨 - 와 연관된 상기 저장 블록 그룹을 식별하고,
상기 저장 블록 그룹의 해시를 생성하며,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하고,
상기 소프트웨어 스택 상의 상기 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나 - 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나는 상기 키 관리자에 의해 제공됨 - 와 연관된 상기 개인 키 및 상기 공개 키에 기초하여 상기 서명을 검증하며,
상기 서명이 유효한 경우, 상기 저장 블록 그룹의 해시로부터 상기 소프트웨어 스택 상의 상기 애플리케이션으로 데이터를 제공하는,
장치.
- 제1항에 있어서,
애플리케이션으로부터 상기 데이터 액세스 요청을 수신하는 애플리케이션 인터페이스를 더 포함하되, 상기 데이터 액세스 요청은 상기 블록 관리자로 하여금 상기 데이터 액세스 요청에서 표시된 상기 제1 저장 블록과 연관된 상기 저장 블록 그룹에 대해 서명 검증을 수행하고, 상기 저장 블록 그룹은 상기 제1 저장 장치에 포함되는,
장치.
- 제1항에 있어서,
상기 마이그레이션 핸들러는 상기 저장 블록 그룹의 상기 데이터, 상기 저장 블록 그룹의 상기 데이터의 인증(certification), 및 상기 저장 블록 그룹에 대응하는 공개 키를 상기 제2 저장 장치로 마이그레이션하는,
장치.
- 제1항에 있어서,
상기 블록 관리자는 하드웨어 회로를 사용하여 상기 데이터 액세스 요청의 서명을 검증하며, 상기 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인,
장치.
- 제1항에 있어서,
상기 마이그레이션 핸들러는 하드웨어 회로를 사용하여 상기 저장 블록 그룹의 상기 데이터 및 상기 대응하는 메타데이터를 상기 제1 저장 장치로부터 상기 제2 저장 장치로 마이그레이션하며, 상기 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인,
장치.
- 제1항에 있어서,
상기 저장 블록 그룹은 복수의 파일을 포함하고, 상기 블록 관리자는 상기 서명을 사용하여 상기 복수의 파일을 검증하는,
장치.
- 제1항에 있어서,
상기 제1 저장 장치 및 상기 제2 저장 장치는 에지 장치이고, 상기 마이그레이션 핸들러는 상기 저장 블록 그룹의 상기 데이터 및 상기 대응하는 메타데이터를 저장 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 에지 컴퓨팅 네트워크의 대응하는 에지 위치의 상기 제1 저장 장치와 상기 제2 저장 장치 사이에서 마이그레이션하는,
장치.
- 명령어를 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
상기 명령어는 실행될 경우에 적어도 하나의 프로세서로 하여금,
테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 상기 저장 블록 그룹은 서명과 연관되고, 상기 서명은 상기 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하게 하고,
소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하게 하며,
상기 테넌트에 대한 상기 저장 블록 그룹의 상기 맵에 기초하여 상기 데이터 액세스 요청에 대한 서명 검증을 수행하게 하고,
상기 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 상기 메타데이터는 상기 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금,
상기 테넌트에 대한 상기 테넌트 키 식별자 또는 상기 테넌트의 제1 애플리케이션에 대한 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 개인 키 및 공개 키를 등록하게 하고,
상기 개인 키 및 상기 공개 키를 사용하여 상기 저장 블록 그룹의 주소에 있는 데이터를 검증하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제13항에 있어서,
상기 데이터 액세스 요청은 쓰기 요청이고, 상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 상기 쓰기 요청에 응답하여,
상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나 - 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나는 상기 쓰기 요청에서 제공됨 - 와 연관된 상기 개인 키 및 상기 공개 키를 식별하게 하고,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하게 하며,
상기 소프트웨어 스택 상의 상기 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 개인 키를 업데이트하게 하고,
상기 제1 저장 블록의 저장 블록 주소 - 상기 저장 블록 주소는 상기 쓰기 요청에 포함됨 - 와 연관된 상기 저장 블록 그룹을 식별하게 하고,
상기 저장 블록 그룹의 해시를 생성하게 하며,
상기 개인 키로 상기 해시에 서명하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제13항에 있어서,
상기 데이터 액세스 요청은 읽기 요청이고, 상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 상기 읽기 요청에 응답하여,
상기 제1 저장 블록의 저장 블록 주소 - 상기 저장 블록 주소는 상기 읽기 요청에 포함됨 - 와 연관된 상기 저장 블록 그룹을 식별하게 하고,
상기 저장 블록 그룹의 해시를 생성하게 하며,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하게 하고,
상기 소프트웨어 스택 상의 상기 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 상기 개인 키 및 상기 공개 키에 기초하여 상기 서명을 검증하게 하며,
상기 서명이 유효한 경우, 상기 저장 블록 그룹의 해시로부터 상기 소프트웨어 스택 상의 상기 애플리케이션으로 데이터를 제공하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 애플리케이션으로부터 상기 데이터 액세스 요청을 수신하게 하고, 상기 데이터 액세스 요청은 상기 적어도 하나의 프로세서로 하여금 상기 데이터 액세스 요청에서 표시된 상기 제1 저장 블록과 연관된 상기 저장 블록 그룹에 대해 서명 검증을 수행하게 하며, 상기 저장 블록 그룹은 상기 제1 저장 장치에 포함되는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 하드웨어 회로를 사용하여 상기 데이터 액세스 요청의 서명을 검증하게 하고, 상기 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 하드웨어 회로를 사용하여 상기 저장 블록 그룹의 상기 데이터 및 상기 대응하는 메타데이터를 상기 제1 저장 장치로부터 상기 제2 저장 장치로 마이그레이션하게 하고, 상기 하드웨어 회로는 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit) 중 적어도 하나인,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 저장 블록 그룹은 복수의 파일을 포함하고, 상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 상기 서명을 사용하여 상기 복수의 파일을 검증하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 제12항에 있어서,
상기 제1 저장 장치 및 상기 제2 저장 장치는 에지 장치이고, 상기 명령어는 실행될 경우에 상기 적어도 하나의 프로세서로 하여금, 상기 저장 블록 그룹의 상기 데이터 및 상기 대응하는 메타데이터를 저장 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 에지 컴퓨팅 네트워크의 대응하는 에지 위치의 상기 제1 저장 장치와 상기 제2 저장 장치 사이에서 마이그레이션하게 하는,
비일시적 컴퓨터 판독가능 저장 매체.
- 방법으로서,
테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 상기 저장 블록 그룹은 서명과 연관되고, 상기 서명은 상기 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하는 단계와,
소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하는 단계와,
상기 테넌트에 대한 상기 저장 블록 그룹의 상기 맵에 기초하여 상기 데이터 액세스 요청에 대한 서명 검증을 수행하는 단계와,
상기 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 상기 메타데이터는 상기 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하는 단계를 포함하는,
방법.
- 제21항에 있어서,
상기 테넌트에 대한 상기 테넌트 키 식별자 또는 상기 테넌트의 제1 애플리케이션에 대한 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 개인 키 및 공개 키를 등록하는 단계와,
상기 개인 키 및 상기 공개 키를 사용하여 상기 저장 블록 그룹의 주소에 있는 데이터를 검증하는 단계를 더 포함하는,
방법.
- 제22항에 있어서,
상기 데이터 액세스 요청은 쓰기 요청이고, 상기 쓰기 요청에 응답하여,
상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 상기 개인 키 및 상기 공개 키를 식별하는 단계 - 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나는 상기 쓰기 요청에서 제공됨 - 와,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 쓰기 요청과 연관된 제1 서명이 업데이트되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하는 단계와,
상기 소프트웨어 스택 상의 상기 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 개인 키를 업데이트하는 단계와,
상기 제1 저장 블록의 저장 블록 주소와 연관된 상기 저장 블록 그룹을 식별하는 단계 - 상기 저장 블록 주소는 상기 쓰기 요청에 포함됨 - 와,
상기 저장 블록 그룹의 해시를 생성하는 단계와,
상기 개인 키로 상기 해시에 서명하는 단계를 더 포함하는,
방법.
- 제22항에 있어서,
상기 데이터 액세스 요청은 읽기 요청이고, 상기 읽기 요청에 응답하여,
상기 제1 저장 블록의 저장 블록 주소와 연관된 상기 저장 블록 그룹을 식별하는 단계 - 상기 저장 블록 주소는 상기 읽기 요청에 포함됨 - 와,
상기 저장 블록 그룹의 해시를 생성하는 단계와,
상기 소프트웨어 스택 상의 제2 애플리케이션이 상기 읽기 요청과 연관된 제1 서명이 검증되어야 함을 나타내는 플래그를 제공했는지 여부를 판정하는 단계와,
상기 소프트웨어 스택 상의 상기 제2 애플리케이션이 상기 플래그를 제공했다는 판정에 응답하여, 상기 테넌트 키 식별자 또는 상기 애플리케이션 키 식별자 중 상기 적어도 하나와 연관된 상기 개인 키 및 상기 공개 키에 기초하여 상기 서명을 검증하는 단계와,
상기 서명이 유효한 경우, 상기 저장 블록 그룹의 해시로부터 상기 소프트웨어 스택 상의 상기 애플리케이션으로 데이터를 제공하는 단계를 더 포함하는,
방법.
- 장치로서,
적어도 하나의 메모리와,
상기 장치 내의 명령어와,
상기 명령어를 실행하는 프로세서 회로를 포함하되,
상기 명령어는,
테넌트 키 식별자 또는 애플리케이션 키 식별자 중 적어도 하나를 사용하여 저장 블록 그룹 - 상기 저장 블록 그룹은 서명과 연관되고, 상기 서명은 상기 저장 블록 그룹을 검증함 - 을 테넌트에 매핑하여 맵을 생성하게 하고,
소프트웨어 스택으로부터의 제1 저장 블록에 대한 데이터 액세스 요청에 액세스하게 하며,
상기 테넌트에 대한 상기 저장 블록 그룹의 상기 맵에 기초하여 상기 데이터 액세스 요청에 대한 서명 검증을 수행하게 하고,
상기 저장 블록 그룹의 데이터 및 대응하는 메타데이터 - 상기 메타데이터는 상기 저장 블록 그룹의 증명 데이터를 포함함 - 를 제1 저장 장치로부터 제2 저장 장치로 마이그레이션하게 하는,
장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,327 US12099636B2 (en) | 2020-12-23 | 2020-12-23 | Methods, systems, articles of manufacture and apparatus to certify multi-tenant storage blocks or groups of blocks |
US17/133,327 | 2020-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220092365A true KR20220092365A (ko) | 2022-07-01 |
Family
ID=75492066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210161193A KR20220092365A (ko) | 2020-12-23 | 2021-11-22 | 멀티-테넌트 저장 블록 또는 블록 그룹을 인증하기 위한 방법, 시스템, 제품 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12099636B2 (ko) |
EP (1) | EP4020876B1 (ko) |
KR (1) | KR20220092365A (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3585008A1 (en) * | 2018-06-20 | 2019-12-25 | Siemens Aktiengesellschaft | Cloud gateway device and method for operating a cloud gateway device |
US11496302B2 (en) * | 2019-07-03 | 2022-11-08 | International Business Machines Corporation | Securely processing secret values in application configurations |
US12010038B2 (en) * | 2022-02-28 | 2024-06-11 | Dell Products L.P. | Edge utility system with dynamic aggregation of edge resources across multiple edge computing sites |
US20230401341A1 (en) * | 2022-06-08 | 2023-12-14 | Infineon Technologies Ag | Secure storage architectures for computing devices |
US12021737B2 (en) * | 2022-11-17 | 2024-06-25 | Cisco Technology, Inc. | Techniques for fetching application data to be used in path selection |
CN118473668A (zh) * | 2023-01-31 | 2024-08-09 | 华为云计算技术有限公司 | 一种基于云管理平台的数据处理方法及其相关设备 |
WO2024197497A1 (en) * | 2023-03-26 | 2024-10-03 | Nokia Shanghai Bell Co., Ltd. | Secure key protection |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI447584B (zh) * | 2010-11-01 | 2014-08-01 | Inst Information Industry | 多人共享之網路儲存服務系統與方法 |
CN103975300A (zh) * | 2011-12-08 | 2014-08-06 | 英派尔科技开发有限公司 | 用于允许跨用户的重复数据删除的存储折扣 |
US9218406B2 (en) * | 2012-04-26 | 2015-12-22 | Connected Data, Inc. | System and method for managing user data in a plurality of storage appliances over a wide area network for collaboration, protection, publication, or sharing |
US10440096B2 (en) | 2016-12-28 | 2019-10-08 | Intel IP Corporation | Application computation offloading for mobile edge computing |
US11755499B2 (en) | 2018-05-31 | 2023-09-12 | Secturion Systems, Inc. | Locally-stored remote block data integrity |
US11363005B2 (en) * | 2018-12-04 | 2022-06-14 | Journey.ai | Storing information within a zero-knowledge data management network |
US11637687B2 (en) | 2019-12-20 | 2023-04-25 | Intel Corporation | Methods and apparatus to determine provenance for data supply chains |
-
2020
- 2020-12-23 US US17/133,327 patent/US12099636B2/en active Active
-
2021
- 2021-09-13 EP EP21196372.3A patent/EP4020876B1/en active Active
- 2021-11-22 KR KR1020210161193A patent/KR20220092365A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
EP4020876A1 (en) | 2022-06-29 |
US20210117555A1 (en) | 2021-04-22 |
US12099636B2 (en) | 2024-09-24 |
EP4020876B1 (en) | 2024-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220092365A (ko) | 멀티-테넌트 저장 블록 또는 블록 그룹을 인증하기 위한 방법, 시스템, 제품 및 장치 | |
EP3985511A1 (en) | Orchestration of meshes | |
CN114365452A (zh) | 用于在边缘计算环境中证明对象的方法和装置 | |
US11888858B2 (en) | Calculus for trust in edge computing and named function networks | |
US9614875B2 (en) | Scaling a trusted computing model in a globally distributed cloud environment | |
Dukaric et al. | Towards a unified taxonomy and architecture of cloud frameworks | |
CN114338679A (zh) | 用于边缘环境中的工作负荷布置的方法、设备和制品 | |
CN112583882A (zh) | 用于管理边缘环境中的遥测数据的方法、系统、制品和装置 | |
CN114253793A (zh) | 动态追踪控制 | |
CN114661455A (zh) | 用于验证边缘环境中的经训练模型的方法和设备 | |
CN114679449A (zh) | 中立主机边缘服务 | |
US11909845B2 (en) | Methods and systems for managing applications of a multi-access edge computing environment | |
US9858110B2 (en) | Virtual credential adapter for use with virtual machines | |
US9645852B2 (en) | Managing a workload in an environment | |
CN114661486A (zh) | 用于批量处理功能的方法、系统、制品和设备 | |
US20220114011A1 (en) | Methods and apparatus for network interface device-based edge computing | |
US20220121566A1 (en) | Methods, systems, articles of manufacture and apparatus for network service management | |
US11762743B2 (en) | Transferring task data between edge devices in edge computing | |
EP4199426A1 (en) | Methods, systems, articles of manufacture and apparatus to improve mobile edge platform resiliency | |
US9246778B2 (en) | System to enhance performance, throughput and reliability of an existing cloud offering | |
US20220327005A1 (en) | Methods and apparatus to load balance edge device workloads | |
US20220107862A1 (en) | Methods, apparatus and articles of manufacture to perform service failover | |
US20230344716A1 (en) | Methods and apparatus to autonomously implement policies at the edge | |
US20230188341A1 (en) | Cryptographic operations in edge computing networks | |
US20240193617A1 (en) | Methods and apparatus to assign workloads based on emissions estimates |