KR102668409B1 - 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 - Google Patents
로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 Download PDFInfo
- Publication number
- KR102668409B1 KR102668409B1 KR1020220021722A KR20220021722A KR102668409B1 KR 102668409 B1 KR102668409 B1 KR 102668409B1 KR 1020220021722 A KR1020220021722 A KR 1020220021722A KR 20220021722 A KR20220021722 A KR 20220021722A KR 102668409 B1 KR102668409 B1 KR 102668409B1
- Authority
- KR
- South Korea
- Prior art keywords
- key
- epc
- object key
- value
- target
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 35
- 238000003860 storage Methods 0.000 claims abstract description 84
- 238000004590 computer program Methods 0.000 claims description 2
- 230000000052 comparative effect Effects 0.000 description 123
- 238000012795 verification Methods 0.000 description 23
- 230000002085 persistent effect Effects 0.000 description 19
- 238000013461 design Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 16
- 230000006835 compression Effects 0.000 description 14
- 238000007906 compression Methods 0.000 description 14
- 230000003321 amplification Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 11
- 238000003199 nucleic acid amplification method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000011084 recovery Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 238000002474 experimental method Methods 0.000 description 8
- 230000007423 decrease Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005056 compaction Methods 0.000 description 3
- 238000013479 data entry Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 210000001956 EPC Anatomy 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 235000008673 Persea americana Nutrition 0.000 description 1
- 240000002426 Persea americana var. drymifolia Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
일 실시예에 따른 장치는 엔클레이브 페이지 캐시(enclave page cache; EPC) 및 상기 EPC와 구별되는 부분 메모리를 포함하는 메모리, 상기 메모리와 구별되는 스토리지, 사용자로부터 객체 키(object key)를 포함하는 조회 요청(lookup request)을 수신하고, 상기 객체 키를 상기 EPC에 저장된 테이블에서 검색하며, 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 스토리지에 저장된 로그 구조 병합 트리(log structured merge tree)의 테이블에서 상기 객체 키를 검색하고, 상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드(message authentication code)를 획득하며, 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성(integrity)을 검증(verify)하는 프로세서를 포함할 수 있다.
Description
이하, 키 밸류 스토어의 최신성을 보장하기 위한 보안 컴퓨터 장치에 관한 기술이 개시된다.
영구(Persistent) 키 밸류 스토어(key-value stores; KVS)는 최신 소프트웨어 제품에 폭넓게 활용될 수 있다. KVS는, 클라우드 기반 서비스들(예: Netflix, Facebook, 또는 Uber)에 의하여 대규모 데이터 처리 또는 데이터베이스 관리 시스템들을 위한 스토리지 엔진으로서 직접적으로 또는 간접적으로 이용될 수 있다.
KVS는 사용자 자격 증명(user credential) 및 사생활 정보(private information)를 포함한 서비스 데이터를 안전하게 유지 관리하는 것이 요구될 수 있다. 대부분의 KVS는 공용 클라우드 서비스에서 실행될 수 있고, KVS의 콘텐츠는 클라우드 플랫폼의 권한 있는(privileged) 소프트웨어 또는 물리적 기계들(physical machines)의 제어(control)를 가지는 사람에게 공개 가능할 수 있다. 그러므로, 클라우드 기반 서비스들은, 사용 가능한 가장 강력한 메커니즘으로 KVS를 보호하는 것이 요구될 수 있다. KVS는 하드웨어 기반 기밀 컴퓨팅(예: Intel SGX(Software Guard Extensions) 및 Keystone Enclave)을 통해 보호될 수 있다.
하드웨어 기반 기밀 컴퓨팅은 KVS에 대한 강력한 보안을 보장할 수 있다. 하드웨어 기반 기밀 컴퓨팅은, 클라이언트가 보유한 암호화 키를 요구하는 잠금 해제를 포함하는 암호화 동작을 이용할 수 있다.
일 실시예에 따른 프로세서에 의하여 수행되는 방법에 있어서, 사용자로부터 객체 키(object key)를 포함하는 조회 요청(lookup request)을 수신하는 단계, 상기 객체 키를, 메모리의 엔클레이브 페이지 캐시(enclave page cache; EPC)에 저장된 테이블에서, 검색하는 단계, 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 메모리와 구별되는 스토리지(storage)에 저장된 로그 구조 병합 트리(log structured merge tree)의 테이블에서 상기 객체 키를 검색하는 단계, 상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드(message authentication code)를 획득하는 단계, 및 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성(integrity)을 검증(verify)하는 단계를 포함할 수 있다.
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는 단계는, 상기 EPC로부터, 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들 중에서 상기 대상 테이블에 매핑된 대상 인증 키를 획득하는 단계, 상기 EPC로부터 획득된 상기 대상 인증 키 및 상기 스토리지로부터 획득된 상기 밸류에 기초하여, 상기 밸류에 대한 비교 메시지 인증 코드를 산출하는 단계, 및 상기 산출된 비교 메시지 인증 코드를 상기 획득된 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는 단계를 포함할 수 있다.
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는, 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 최소 레벨에서부터 상기 객체 키의 검색을 시작하는 단계, 상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색되지 않은 경우, 상기 검색 중인 레벨의 다음 레벨에서 상기 객체 키를 재검색하는 단계, 및 상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색된 경우, 상기 객체 키의 검색을 종료하는 단계를 포함할 수 있다.
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는, 상기 로그 구조 병합 트리의 대상 테이블의 복수의 데이터 블록들 중에서, 상기 복수의 데이터 블록들에 포함된 객체 키의 범위를 지시하는, 상기 대상 테이블의 인덱스 블록에 기초하여, 상기 객체 키를 포함할 가능성을 가지는 대상 데이터 블록을 결정하는 단계, 상기 대상 데이터 블록의 복수의 키 밸류 쌍들의 객체 키들을 가지는 키 블록의 순서를 검증하는 단계 및 상기 대상 데이터 블록의 상기 키 블록의 순서가 검증된 경우, 상기 키 블록에서 상기 객체 키를 검색하는 단계를 포함할 수 있다.
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는, 상기 대상 데이터 블록의 상기 키 블록에서 상기 객체 키가 검색되지 않은 경우, 상기 대상 테이블의 다음 레벨의 테이블을 대상 테이블로 변경하여 상기 객체 키를 재검색하는 단계를 더 포함할 수 있다.
상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드를 획득하는 단계는, 상기 객체 키가 대상 데이터 블록의 키 블록에서 검색된 경우, 상기 대상 데이터 블록의 밸류 블록으로부터 상기 객체 키에 대응하는 상기 밸류 및 상기 밸류에 대응하는 상기 기준 메시지 인증 코드를 획득하는 단계를 포함할 수 있다.
일 실시예에 따른 방법은 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC로부터, 상기 객체 키에 대응하는 기준 메시지 인증 코드 및 상기 EPC에 저장된 테이블에 대응하는 대상 인증 키를 획득하는 단계, 상기 EPC와 구별되는 상기 메모리의 부분 메모리로부터 상기 객체 키에 대응하는 밸류를 획득하는 단계, 및 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는 단계를 더 포함할 수 있다.
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는 단계는, 상기 EPC로부터 획득된 상기 EPC에 저장된 테이블에 매핑된 대상 인증 키 및 상기 EPC와 구별되는 상기 부분 메모리로부터 획득된 밸류에 기초하여 비교 메시지 인증 코드를 산출하는 단계 및 상기 산출된 비교 메시지 인증 코드를 상기 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는 단계를 포함할 수 있다.
일 실시예에 따른 장치는, 엔클레이브 페이지 캐시(enclave page cache; EPC) 및 상기 EPC와 구별되는 부분 메모리를 포함하는 메모리, 상기 메모리와 구별되는 스토리지, 사용자로부터 객체 키(object key)를 포함하는 조회 요청(lookup request)을 수신하고, 상기 객체 키를 상기 EPC에 저장된 테이블에서 검색하며, 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 스토리지에 저장된 로그 구조 병합 트리(log structured merge tree)의 테이블에서 상기 객체 키를 검색하고, 상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드(message authentication code)를 획득하며, 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성(integrity)을 검증(verify)하는 프로세서를 포함할 수 있다.
상기 프로세서는, 상기 EPC로부터, 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들 중에서 상기 대상 테이블에 매핑된 대상 인증 키를 획득하고, 상기 EPC로부터 획득된 상기 대상 인증 키 및 상기 스토리지로부터 획득된 상기 밸류에 기초하여, 상기 밸류에 대한 비교 메시지 인증 코드를 산출하며, 상기 산출된 비교 메시지 인증 코드를 상기 획득된 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증할 수 있다.
상기 프로세서는, 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 최소 레벨에서부터 상기 객체 키의 검색을 시작하고, 상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색되지 않은 경우, 상기 검색 중인 레벨의 다음 레벨에서 상기 객체 키를 재검색하며, 상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색된 경우, 상기 객체 키의 검색을 종료할 수 있다.
상기 프로세서는, 상기 로그 구조 병합 트리의 대상 테이블의 복수의 데이터 블록들 중에서, 상기 복수의 데이터 블록들에 포함된 객체 키의 범위를 지시하는, 상기 대상 테이블의 인덱스 블록에 기초하여, 상기 객체 키를 포함할 가능성을 가지는 대상 데이터 블록을 결정하고, 상기 대상 데이터 블록의 복수의 키 밸류 쌍들의 객체 키들을 가지는 키 블록의 순서를 검증하며, 상기 대상 데이터 블록의 상기 키 블록의 순서가 검증된 경우, 상기 키 블록에서 상기 객체 키를 검색할 수 있다.
상기 프로세서는, 상기 대상 데이터 블록의 상기 키 블록에서 상기 객체 키가 검색되지 않은 경우, 상기 대상 테이블의 다음 레벨의 테이블을 대상 테이블로 변경하여 상기 객체 키를 재검색할 수 있다.
상기 프로세서는, 상기 객체 키가 대상 데이터 블록의 키 블록에서 검색된 경우, 상기 대상 데이터 블록의 밸류 블록으로부터 상기 객체 키에 대응하는 상기 밸류 및 상기 밸류에 대응하는 상기 기준 메시지 인증 코드를 획득할 수 있다.
상기 프로세서는, 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC로부터, 상기 객체 키에 대응하는 기준 메시지 인증 코드 및 상기 EPC에 저장된 테이블에 대응하는 대상 인증 키를 획득하고, 상기 EPC와 구별되는 상기 메모리의 부분 메모리로부터 상기 객체 키에 대응하는 밸류를 획득하며, 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증할 수 있다.
상기 프로세서는, 상기 EPC로부터 획득된 상기 EPC에 저장된 테이블에 매핑된 대상 인증 키 및 상기 EPC와 구별되는 상기 부분 메모리로부터 획득된 밸류에 기초하여 비교 메시지 인증 코드를 산출하고, 상기 산출된 비교 메시지 인증 코드를 상기 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증할 수 있다.
도 1은 일 실시예에 따른 보안 컴퓨팅 장치를 나타내는 블록도다.
도 2는 일 실시예에 따른 보안 컴퓨터 장치를 나타낸다.
도 3은 일 실시예에 따른 데이터 블록 및 비교 실시예에 따른 데이터 블록을 나타낸다.
도 4는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 EPC에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다.
도 5는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 비휘발성 메모리에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다.
도 6은 일 실시예 및 비교 실시예들에 따른 수정되지 않은 RockDB를 기준으로 하는 정규화된 감속(slowdown)을 나타낼 수 있다.
도 7은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 세가지 워크로드들에 따라 나타낸다.
도 8은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 범위 요청의 길이에 따라 나타낸다.
도 9는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치가 큰 데이터 블록을 가지는 경우 정규화된 감속을 세 가지 워크로드들에 따라 나타낸다.
도 10은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 밸류 크기들에 따라 나타낸다.
도 11은 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 스레드 수에 따라 나타낸다.
도 12는 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 블록 캐시 크기에 따라 나타낸다.
도 13는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 페이징의 누적 개수를 나타낸다.
도 14는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 사용량을 나타낸다.
도 15는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 비휘발성 메모리 사용량을 나타낸다.
도 16는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 쓰기 증폭을 나타낸다.
도 17는 일 실시예들에 따른 보안 컴퓨터 장치들의 처리량을 나타낸다.
도 2는 일 실시예에 따른 보안 컴퓨터 장치를 나타낸다.
도 3은 일 실시예에 따른 데이터 블록 및 비교 실시예에 따른 데이터 블록을 나타낸다.
도 4는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 EPC에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다.
도 5는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 비휘발성 메모리에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다.
도 6은 일 실시예 및 비교 실시예들에 따른 수정되지 않은 RockDB를 기준으로 하는 정규화된 감속(slowdown)을 나타낼 수 있다.
도 7은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 세가지 워크로드들에 따라 나타낸다.
도 8은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 범위 요청의 길이에 따라 나타낸다.
도 9는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치가 큰 데이터 블록을 가지는 경우 정규화된 감속을 세 가지 워크로드들에 따라 나타낸다.
도 10은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 밸류 크기들에 따라 나타낸다.
도 11은 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 스레드 수에 따라 나타낸다.
도 12는 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 블록 캐시 크기에 따라 나타낸다.
도 13는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 페이징의 누적 개수를 나타낸다.
도 14는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 사용량을 나타낸다.
도 15는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 비휘발성 메모리 사용량을 나타낸다.
도 16는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 쓰기 증폭을 나타낸다.
도 17는 일 실시예들에 따른 보안 컴퓨터 장치들의 처리량을 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
구체적으로 들어가기 전에, 용어 "키(Key)"는 여러 의미들을 가질 수 있다. 예를 들어, "키"는 데이터를 암호화 및/또는 복호화하는데 사용될 수 있다. 일반적으로, 이러한 키는 "암호화 키(encryption key)"로 불릴 수 있다. 다른 예를 들어, "키"는 데이터에 기초하여 데이터의 무결성(integrity)를 검증하기 위하여 메시지 인증 코드(MAC)를 산출하는 데 사용될 수 있다. 일반적으로, 이러한 키는 "인증 키(authentication key)"로 불릴 수 있다. 또 다른 예를 들어, "키"는 KVS에서 특정 객체를 식별하기 위해 사용되는 정보를 의미할 수 있다. 일반적으로, 이러한 키는 "객체 키(object key)"로 불릴 것이다. "키"라는 용어가 수식어(modifier)없이 사용되는 경우, 컨텍스트(context, 문맥)는 어떤 유형의 키가 의도되었는지를 명확하게 할 것이다.
도 1은 일 실시예에 따른 보안 컴퓨팅 장치를 나타내는 블록도다.
보안 컴퓨팅 장치(100)는, 프로세서(110), 메모리(120), 및 스토리지(storage) (130)를 포함할 수 있다. 보안 컴퓨팅 장치(100)는 키 밸류 스토어(Key Valute Store; KVS)에 저장된 데이터에 액세스하고 무결성을 보장하기 위하여 사용될 수 있다. 키 밸류 스토어는 도 2에서 후술한다.
프로세서(110)는 저장된 명령어를 읽고 필요에 따라 실행하도록 구성될 수 있다. 프로세서(110)는, 사용자로부터의 조회 요청에 응답하여 메모리(120) 및 스토리지(130)에서 조회 요청의 객체 키를 검색할 수 있다.
일 실시예에 따른 프로세서(110)는 엔클레이브(enclave)를 지원하는 프로세서를 포함할 수 있다. 엔클레이브(enclave)는 운영 체제 프로세스의 맥락에서 어플리케이션이 내부에 데이터를 저장하고 코드를 실행하게 하기 위한 보안 영역(예: 분리되고 암호화된 영역)을 제공하는 어플리케이션 또는 프로세스에 내장된 신뢰할 수 있는 실행 환경을 나타낼 수 있다. 예시적으로, 엔클레이브를 지원하는 프로세서는 인텔 SGX(Intel Software Guard Extensions)를 이용할 수 있다. 후술하겠으나, 엔클레이브는 엔클레이브 명령어와 관련된 프로세서에 의해 제공되는 액세스 제어 메커니즘을 사용하여 데이터가 보호되는 EPC(121)에서 실행될 수 있다.
인텔 SGX(이하, 본 명세서에서 SGX라고도 표현됨)는 해당 메모리 보호 의미 체계 및 관리에 사용되는 명령어를 갖는 프로세서 상의 새로운 실행 모드를 나타낼 수 있다. SGX는 보호된 메모리 페이지를 원하는 명령어와 데이터로 채우고, 명령어와 데이터를 엔클레이브에 잠그고, 메모리 페이지 안에서 측정을 수행하여 엔클레이브를 생성할 수 있다. 프로세서는 엔클레이브에서 명령어를 실행할 수 있다. 프로세서와 다른 엔티티(예: 공격자)는 엔클레이브에 속하는 메모리 페이지를 판독 및 기록할 권한을 가질 수 없을 수 있다.
엔클레이브를 지원하는 프로세서는, 엔클레이브를 사용하여 보안 데이터 저장 및 실행을 가능하게 하는 복수의 보안 엔클레이브 명령어들을 포함하는 명령 세트 아키텍처를 갖는 것으로 인식될 수 있다.
메모리(120)는 휘발성 메모리(Volatile Memory)로서, 엔클레이브 페이지 캐시(Enclave Page Cache; EPC)(121) 및 부분 메모리(123)를 포함할 수 있다. 휘발성 메모리는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치를 나타낼 수 있다. 예시적으로, 휘발성 메모리는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 및 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM) 중 적어도 하나를 포함할 수 있다.
EPC(121)는, 엔클레이브 명령어가 실행되고 보호된 엔클레이브 데이터에 액세스하는 위치를 나타낼 수 있다. EPC는 보안 컴퓨팅 장치(100)의 물리적 주소 공간 내에 위치할 수 있지만, 엔클레이브 명령어(예: 엔클레이브에서 실행 중인 프로그램)에 의하여만 액세스될 수 있다. EPC(121)의 데이터는 엔클레이브 명령어와 관련된 프로세서에 의해 제공되는 액세스 제어 메커니즘을 통해 보호될 수 있다.
도 1에 나타난 바와 같이, EPC(121)는 메모리(120)의 일부로서 구현될 수 있다. EPC는 많은 엔클레이브로부터의 페이지들을 담고 있을 수 있고, 페이지의 무결성 및 기밀성을 보호하기 위한 액세스 제어 메커니즘을 제공할 수 있다. 페이지 캐시는 보안 컴퓨팅 장치(100)에서 일관된 물리적 메모리에 사용되는 프로토콜과 유사한 일관된 프로토콜을 유지할 수 있다. 엔클레이브 페이지는 운영 체제에 의해 EPC에 로드될 수 있다.
부분 메모리(123)는 메모리(120)의 부분 메모리로서, EPC(121)를 제외한 나머지 휘발성 메모리를 나타낼 수 있다. 부분 메모리(123)의 데이터는, 암호화(encryption) 및 메시지 인증 코드(message authentication code; MAC)에 의해 암호학적으로(cryptographically) 보호될 수 있다. 부분 메모리(123)는, 신뢰할 수 있는 휘발성 메모리인 EPC와 비교하여, 신뢰할 수 없는(untrusted) 휘발성 메모리로 표현될 수 있다.
스토리지(storage)(130)는 메모리(120)와 구별되는 저장 장치를 포함할 수 있다. 예시적으로, 스토리지(130)는 솔리드 스테이트 드라이브(Solid State Drive; SSD) 및 하드 디스크 드라이브(Hard Disk Drive; HDD)중 적어도 하나를 포함할 수 있다.
스토리지(130)의 데이터는, 암호화(encryption) 및 메시지 인증 코드에 의해 보호될 수 있다.
프로세서(110)는 데이터를 EPC(121)의 외부(예: 메모리(120)의 부분 메모리(123) 및 스토리지(130))로 내보낼 때, 메모리 암호화 엔진(memory encryption engine)에 의하여 MAC을 이용하여 암호화하고 인증할 수 있다. EPC(121)의 외부를 교체(replace)할 수 있는 강력한 공격자라도, EPC의 데이터를 직접 획득하거나 손상시킬 수 없고, 감지되지 않는 것이 불가능할 수 있다.
보안 컴퓨터 장치의 성능은, EPC(121)의 외부를 위한 보호 메커니즘으로 인하여, 감소할 수 있다. 예시적으로, 비교 실시예에 따른 보안 컴퓨터 장치에서, SGX는 각 캐시 라인에 대해 키 HMAC(hash MAC)를 산출하고, 수정된 버전의 Merkle 트리를 구성하며, EPC(121)의 외부에 저장된 EPC의 최신성(freshness)을 보장하기 위하여 CPU 하드웨어 내에 Merkle 트리의 루트를 유지할 수 있다. 각각의 캐시 교체 동작은, Merkle 트리를 이용한 MAC 검증을 수반할 수 있다. Merkle 트리를 이용한 MAC 검증은 EPC가 전체적으로 엔클레이브에 의해 기록된 대로 유지된 것을 보장할 수 있다. 최신성은, 무결성(integrity)을 만족하면서, 데이터의 서로 다른 시점에 따른 복수의 버전들 (versions) 중 가장 최신 버전의 데이터임을 나타낼 수 있다. 무결성은, 권한이 있는 자에 의하여 작성된 데이터임을 나타낼 수 있고, 프로세서가 권한이 없는 자에 의하여 수정되거나 위조된 데이터를 감지 가능한 것을 나타낼 수 있다.
EPC(121)의 외부의 데이터의 암호화는, EPC(121)의 외부 사용을 제한할 수 있다. 예를 들어, 기밀성은 메모리의 데이터가 암호화되는 것을 요구하고, 무결성은 MAC 산출 및 검증을 요구할 수 있다. 엔클레이브로 이용 가능한 메모리 총량이 증가하는 경우, MAC의 비용이 함께 증가할 수 있다. 따라서, 대용량 메모리가 엔클레이브로 이용되는 것은 불가능할 수 있다. 예시적으로, EPC(121)는 설계 및 구현 선택에 따라 일반적으로 128MB 또는 256MB 용량을 가질 수 있다.
엔클레이브는 EPC(121)의 용량을 초과하는 메모리를 사용할 수도 있지만, EPC(121)에 맞지 않는 페이지는 암호화 보호를 통해 EPC(121)에서 페이지 아웃되어야 할 수 있다. 또한 어플리케이션들은 페이지가 EPC로 로드되는 경우에만, 메모리의 페이지에 액세스할 수 있다. 예를 들어, 훨씬 더 큰 용량의 EPC를 요구하는 실제 어플리케이션에 대하여, SGX는 EPC 페이징을 제공하지만, 암호화 및 MAC 검증의 비용은 EPC 페이징을 이용하는 경우에도 클 수 있다. 결과적으로, 맞춤화되지 않은 큰 용량의 EPC를 요구하는 어플리케이션은 상당한 성능 오버헤드로부터 고통받을 수 있다. 따라서 어플리케이션은 EPC 페이징을 최소화하도록 신중하게 재설계(redesign)되어야 하고, 수동적인(manual) 보호와 함께 대용량 데이터 청크들(data chunks)을 저장해야 할 수 있다.
시스템 호출 오버헤드가 증가하는 경우, 보안 컴퓨터 장치의 성능이 감소할 수 있다. 엔클레이브는 분리된 실행 컨텍스트와 같이 사용자 프로세스의 일부로서 실행될 수 있다. 시스템 호출을 분리된 실행 컨텍스트로부터 호출하기 위하여 추가 컨텍스트 전환이 요구될 수 있다. 그러므로, 엔클레이브에서 실행되는 대부분의 어플리케이션들은 주요 성능 최적화 메커니즘으로서 비동기 시스템 호출을 채택할 수 있다. 여기서, 어플리케이션은 엔클레이브로부터의 시스템 호출을 중재하기 위한 역할과 함께 사용자의 컨텍스트에서 머무르는 스레드를 생성할 수 있다. 후술하겠으나, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 또한 SCONE에서 실행됨으로써 비동기 시스템 호출을 채택할 수 있다.
도 2는 일 실시예에 따른 보안 컴퓨터 장치를 나타낸다.
일 실시예에 따른 보안 컴퓨터 장치는 영구(persistent) 키 밸류 스토어(key value store; KVS)를 이용할 수 있다. 키 밸류 스토어는, NoSQL 데이터 베이스의 일종으로서, 빅 데이터 처리를 위한 비 관계형(NonRelational) 데이터 베이스 관리 시스템 중 객체 키 값을 이용하여 해당 객체 키 값에 대응되는 데이터인 밸류(Value)를 관리하는 시스템을 나타낼 수 있다. 영구 KVS는, 대용량(예: 수십 기가바이트 이상)의 데이터를 처리하기 위하여 많은 메모리 사용량을 가질 수 있다. 영구 KVS는 하드웨어 기반 기밀 컴퓨팅을 통해 보호되기 위하여, 도 1에서 전술한 EPC 제한들을 고려하여 맞춤화(tailor)되어야 할 수 있다.
영구 KVS는, 휘발성 메모리의 캐시 및 미리 쓰기 로그(write ahead log; WAL)와 함께, 비휘발성 메모리(예: 스토리지(storage), 도 1의 스토리지(130))의 데이터를 위하여 로그 구조 병합 트리(log structured merge tree; LSM tree)를 이용할 수 있다. LSM 트리 및 WAL은 암호화 및 MAC을 통해 수동으로 보호되어야 할 수 있다.
예를 들어, 일 실시예에 따른 영구 KVS는, 같은 빅 데이터 처리에 적합하고 빠른 플래시 저장 장치에서 높은 성능을 내는 RocksDB 플랫폼에서 구동될 수 있다. RocksDB는, 프로덕션에서 널리 사용되는 오픈 소스 영구 KVS로서, 메모리, 플래시, 하드디스크 및 HDFS등 다양한 환경에서 실행이 가능하고, 오픈 소스 프로젝트인 LevelDB에 기반할 수 있다. RocksDB는 비휘발성 메모리(예: 스토리지)의 키 밸류 쌍들을 위한 데이터 구조로 LSM 트리를 이용할 수 있다.
LSM 트리는 LevelDB, RocksDB 및 Hbase 와 같은 키 벨류 스토어에서 사용되는 베이스 트리(BaseTree) 알고리즘으로서, 쓰기 집중 데이터 워크로드(Write Intensive Data Workload)를 위해 설계된 데이터 구조일 수 있고, 낮은 쓰기 대기 시간(Latency)를 유지할 수 있다.
예를 들어, 데이터가 계층적으로 관리되는 로그 구조 병합 트리(LSM 트리)는 휘발성 메모리가 가득 차는 경우에 한해 비휘발성 메모리(예: 스토리지)로 플러싱하기 때문에 낮은 쓰기 대기 시간을 달성할 수 있다. LSM 트리는 낮은 쓰기 대기 시간을 위하여, 데이터를 업데이트하거나 삭제하지 않는 대신, 삭제된 데이터 엔트리를 따로 마킹(mark)하는 톰스톤 엔트리(Tombstone entries)를 이용하여 삭제된 데이터에 액세스하는 것을 방지할 수 있다.
비휘발성 메모리에 저장된 데이터들의 삭제는, LSM 트리의 레벨 간 합병(Merge) 동작에 의하여 수행될 수 있다. LSM 트리는 레벨 간 트리 성분(TreeComponent)에 저장된 데이터의 크기가 미리 설정된 임계치(threshold) 이상인 경우, 상위 레벨의 트리 성분이 하위 레벨의 트리 성분으로 합병(Merge)됨으로써 실제 트리 성분에 저장된 데이터는 삭제될 수 있다. RocksDB는 읽기 성능을 향상하기 위하여 블룸 필터 및 LSM트리에서 레벨간 합병(Merge)에 상응하는 병렬 압축(Compaction)을 이용할 수 있다.
RocksDB의 네 가지 주요 구성 요소들은 MemTable, SSTable, WAL(write ahead log), 및 MANIFEST 로그를 포함할 수 있다.
MemTable은, 휘발성 메모리(예: 도 1의 메모리(120))에 상주(reside)할 수 있다. MemTable은 빠른 조회(lookup)를 위하여 스킵 리스트(skip list)를 이용하여 최근에 추가된 키 밸류 쌍들을 저장할 수 있다. 삽입 동작(put operation)은 데이터가 비휘발성 메모리(예: 도1의 스토리지(130), 또는 영구 매체(persistent medium)로도 표현됨)로 플러싱(flush)되기 전에 MemTable을 채우는 동작을 수행할 수 있다. 프로세서는, MemTable의 크기가 구성가능한 임계보다 커지는 경우, MemTable을 변경할 수 없는 것으로 표시(mark)하고, 추가적인 쓰기를 위한 새로운 MemTable을 생성할 수 있다. RocksDB에서, 프로세서는 변경할 수 없는 것으로 표시된(예: 변경 불가능한) MemTable을 SSTable 형태로 비휘발성 메모리로 이동시키기 위하여 백그라운드 플러시 스레드를 트리거시킬 수 있다. MemTable은 기본적으로(by default) 상대적으로 크기 때문에(예: 64MB) EPC를 효율적으로 사용하기 위하여 맞춤화되어야 할 수 있다.
새로운 SSTable은 일련의 MemTable들로부터 생성될 수 있고, LSM 트리의 레벨 0을 구성할 수 있다. 객체 키에 대한 새로운 읽기 요청(read request)(조회 요청(lookup request)로도 표현됨)은 레벨 0의 모든 SSTable들이 객체 키를 포함할 수 있으므로 모든 SSTable들을 조회해야 할 수 있다. 그러므로, RocksDB에서, 레벨 0에 보유된 SSTable들의 개수는 유지되어야 할 수 있다. 레벨 0에 보유된 SSTable들의 개수가 구성가능한 임계를 초과하는 경우, 프로세서는 압축(compaction)이라는 동작을 트리거시킬 수 있다. 백그라운드에서 실행되는 압축 스레드는, 스토리지의 LSM 트리의 다음 레벨(예: 레벨 1)에 저장된 새로운 SSTable을 생성하기 위하여, 대상 레벨(예: 레벨 0)의 여러 SSTable들을 선택하고, 중복된 객체 키들을 삭제하며, SSTable들을 압축할 수 있다. 압축 동작을 통해, 객체 키는 레벨 0를 제외한 각 레벨에서 최대 한 번 나타날 수 있고, 모든 SSTable들은 정렬될 수 있다. 정렬된 SSTable들을 통해, 프로세서는 KVS에서 객체 키에 대응하는 키 밸류 쌍을 찾기 위하여 레벨마다 최대 하나의 SSTable을 조회할 수 있다.
하나의 SSTable은 인덱스 블록 및 데이터 블록들을 포함할 수 있다. 인덱스 블록의 인덱스 키 시퀀스는 정렬될 수 있다. 예를 들어, 인덱스 키 시퀀스의 i번째 인덱스 키는 i번째 데이터 블록의 객체 키들보다 크고 i+1번째 데이터 블록의 객체 키들보다 작을 수 있다. SSTable의 마지막을 표시하는 매직 넘버 및 SSTable을 나란하게 정렬(align)하기 위한 패딩(padding)을 포함하는 푸터 블록(footer block)은 SSTable의 마지막에 위치할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에서, 프로세서는 푸터 블록에 SSTable의 키 밸류 쌍들의 MAC을 저장할 수 있다. SSTable의 키 밸류 쌍들의 MAC으로 인하여, KVS가 커질 때 EPC 사용량이 증가할 수 있다. 후술하겠으나, 일 실시예에 따른 보안 컴퓨터 장치는, MAC를 키 밸류 쌍마다 산출하고 저장할 수 있다.
본 명세서에서, 보안 컴퓨터 장치에 대한 공격자는 엔클레이브의 컨텍스트(예: 데이터)를 제외한 보안 컴퓨터 장치에 대한 시스템의 완전한 제어권을 획득할 수 있다. 예를 들어, 공격자는 클라우드 제공자의 시스템에서 알려진 취약점을 악용함으로써 또는 클라우드 제공자의 시스템을 유지 관리할 책임을 가지는 내부자로서, 제어권을 획득할 수 있다. 특히, 공격자는 EPC(예: 도1의 메모리(120)의 EPC(121))를 제외한 휘발성 메모리(예: 도1의 메모리(120)의 부분 메모리(123)) 또는 비휘발성 메모리(예: 도1의 스토리지(131))의 데이터를 읽거나 수정할 수 있다. 다만, 프로세서는 공격자를 허용된 클라이언트로 승낙(accept)하지 않기 때문에, 공격자가 KVS를 직접 쿼리하는 것은 불가능할 수 있다.
참고로, 인증 프로토콜의 설계 및 구현은 잘 연구된 문제로서, 보안 컴퓨터 장치의 설계와 독립적으로 적용될 수 있다. 인텔 SGX의 현재 구현이 가지는 구현 버그를 해결하기 위한 새로운 구제책을 제안하는 것은 잠재적으로 보안 보장을 완전히 무효화할 수 있고, 이러한 구현 버그들은 보안 모델에서 근본적인 결함이 아니고 향후 릴리스에서 수정될 예정이기 때문에 목표로 되지 않을 수 있다.
일 실시예에 따른 보안 컴퓨터 장치는 영구 KVS를 이용할 수 있다. 보안 컴퓨터 장치는 영구 KVS가 일반적으로 RocksDB의 확장으로 구현하는 모든 동작들을 수행할 수 있다. 사용자에 대한 유일한 추가적인 요구사항은 한 쌍의 암호화 키 및 인증 키를 검색 및 유지하고, 하트비트 트랜잭션(heartbeat transaction)을 배치하는 것을 포함할 수 있다. 하트비트 트랜잭션은 KVS 버전에 대한 타임스탬프로서, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 스냅샷이 최신 버전인지 검증하기 위하여 이용될 수 있다. 일 실시예에 따른 보안 컴퓨터 장치는, 충돌이 발생한 경우 데이터를 복구하기 위하여 한 쌍의 암호화 키 및 인증 키는 요구될 수 있고, 하트비트 트랜잭션은 롤백 복원력(rollback resilience)을 제공할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치는 보다 더 높은 EPC 효율성 및 짧은 MAC 검증 대기 시간을 달성하기 위하여 세 가지 추가 설계 결정들에 따른 구성을 포함할 수 있다.
도 2의 EPC에 저장된 인증 키(도 2에서 SST Auth Keys(210)로 표시됨)에서 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치는 SSTable에 대하여 고유한 인증 키를 생성하고 해당 SSTable에 매핑시킬 수 있다. 보안 컴퓨터 장치의 프로세서는 비휘발성 메모리(예: 도 1의 스토리지(130))에 데이터를 저장할 때마다, 데이터와 함께 저장될 MAC을 산출할 수 있다. 후술하겠으나, 비휘발성 메모리에 저장된 MAC는 키 밸류 쌍의 밸류에 대한 무결성의 검증을 위하여 이용될 수 있다.
키 밸류 쌍들을 가지는 LSM 트리의 크기가 큰 경우, MAC의 산출 비용이 클 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치는, 큰 LSM 트리의 최신성을 보장하기 위하여, 잠재적으로 긴 대기 시간을 희생하면서 Merkle 트리를 빌딩할 수 있다. 이와 달리, 일 실시예에 따른 보안 컴퓨터 장치는, 전체 LSM 트리를 스패닝하는 Merkle 트리를 구성하는 것을 피하기 위하여, LSM 트리의 세 가지 속성들을 이용할 수 있다. LSM 트리의 세가지 속성들은, 각 SSTable의 불변성, 각 레벨에서 키의 고유성, 및 각 데이터 블록의 정렬된 키들을 포함할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치는 SSTable마다 고유한 인증 키(예: MAC 키)를 SSTable에 매핑시킬 수 있다.
도 2의 비휘발성 메모리에 저장된 LSM 트리의 SSTable의 데이터 블록(도 2에서 Data Block(220)로 표시됨)에서 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치는 SSTable의 데이터 블록이 아닌 각각의 키 밸류 쌍과 MAC을 연관시킬 수 있다. 프로세서는 MAC의 산출 및 암호화를 위한 자연 단위(natural unit)로서, 데이터 블록을 이용할 수 있다. SSTable은 블록 레벨 액세스에 최적화된 비휘발성 메모리에 상주해야 하고, RocksDB에서, 일 실시예에 따른 보안 컴퓨터 장치는 세분성(granularity)을 이용하여 키 밸류 쌍을 획득하여 캐시할 수 있다. 세분성은, MAC이 데이터 블록 전체가 아닌 데이터 블록의 키 밸류 쌍들 중 하나에 연관되는 것을 나타낼 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치는 데이터 블록에 따른 MAC를 산출하고 저장할 수 있다. 데이터 블록은 보안을 위하여, 액세스되는 동안 EPC에 상주해야 하므로 EPC 공간을 소모할 수 있다. KVS가 상대적으로 작은 데이터 세트를 제공하고 작은 블록 캐시만 갖도록 구성되는 경우, 상당한 성능 비용을 발생시키지 않을 수 있다. 그러나, KVS가 보다 더 많은 데이터를 수용하기 위하여 보다 더 큰 블록 캐시를 요구할 때, EPC 공간으로 인하여 빠르게 성능 병목 현상이 나타날 수 있고, EPC 공간은 빠르게 고갈될 수 있다. 이와 달리, 일 실시예에 따른 보안 컴퓨터 장치는 각 키 밸류 쌍을 개별적으로 암호화하고 인증함으로써 EPC 사용에 대한 읽기 증폭을 감소시킬 수 있다.
따라서, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 EPC 공간을 절약하고 EPC의 외부를 SSTable의 캐시로서 보다 더 효과적으로 사용할 수 있다.
도 2의 WAL 및 MANIFEST 로그(도 2에서 WAL 및 MANIFEST LOG(230)로 표시됨)에서 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치는, 신뢰할 수 있는 카운터(trusted counter)를 이용하지 않고 해시 체인을 이용할 수 있다. WAL는, 영구 KVS의 성능을 위해 중요한 데이터로서, 충돌(crash) 후 최근에 업데이트된 키-값 쌍들을 복구하기 위하여 비휘발성 메모리에 저장될 수 있다. 로그는 지속성을 위해 비휘발성 메모리에 상주해야 하므로, 암호화 및 MAC으로 보호되어야 할 수 있다. 적절한 암호화 및 MAC 산출은 기밀성 및 무결성을 보장할 수 있으나, 각 로그 엔트리는 최신성을 위하여 추가 데이터와 연관될 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 신뢰할 수 있는 카운터를 이용할 수 있다. 이와 달리, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 로그의 컨텐츠 및 순서를 보호하기 위하여 해시 체인을 구성할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 해시 체인만으로는 롤백 공격을 방지하는 것이 불가능할 수 있으므로, 하트비트 트랜잭션을 배치할 수 있다. 하트비트 트랜잭션은 KVS 버전에 대한 타임스탬프로서, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 스냅샷이 최신 버전인지 검증하기 위하여 이용될 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 기존 해시 체인을 사용하여 WAL 및 MANIFEST 로그의 무결성 및 최신성을 보장할 수 있다. WAL 및 MANIFEST 로그는 모두 추가 전용 리스트들(append-only lists)일 수 있다. 최신성 검증은 복구(recovery) 시에만 수행되기 때문에, 해시 체인은 WAL 및 MANIFEST 로그를 보호하는 데 적합할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 빈(empty) KVS에서 실행되거나 복구 후에 실행되기 시작할 때, 임시 값(nonce)을 생성하고 생성된 임시 값을 첫 번째 MAC(M0)로 간주하며, MAC 산출을 위한 암호화 키를 생성할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 각각의 새로운 로그 엔트리(ei)에 대하여, 암호화된 데이터를 다음 MAC(Mi)를 산출하기 위하여 이전 로그(Mi-1||E(ei))와 연관시키고, 암호화된 데이터와 함께 저장할 수 있다. 암호화된 키 밸류 쌍은 WAL에 대한 데이터 엔트리가 될 수 있고, 암호화된 새로운 MANIFEST는 MANIFEST 로그에 대한 데이터 엔트리가 될 수 있다. 해시 체인은 해시 체인의 무결성 및 최신성에 대한 공격을 충분히 방지할 수 있다.
로그 보호를 위해 이용되는 해시 체인은, 두 가지 이유에서 신뢰할 수 있는 카운터에 의존하는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 메커니즘을 대신하여 선택될 수 있다. 첫째, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 의존하는 신뢰할 수 있는 카운터는 60ms마다 한 번만 증가할 수 있다. KVS가 EPC의 외부에서 생성할 수 있는 새로운 로그 항목의 수는 60ms당 1개(예: 초당 약 23.4개)로 제한될 수 있다. 새로운 로그 항목의 수는 KVS가 제공할 것으로 예상되는 쓰기 요청의 예상 개수보다 훨씬 더 적을 수 있다. 비교 실시예에 따른 암호 컴퓨터 장치는 불가피하게 새로운 키 밸류 쌍들을 유지하는 것을 지연시킬 수 있다. 대조적으로, 해시 체인 메커니즘은 이러한 제한을 가지지 않을 수 있다. 둘째, 서버 플랫폼에서 신뢰할 수 있는 카운터에 대한 지원은 아직 안정적이지 않고 시스템 설정에 따라 다른 가용성을 가질 수 있다. SGX는 함께 제공되는 Trusted Platform Module에 의하여 제공되는 신뢰할 수 있는 카운터를 이용하도록 설계될 수 있지만, 모든 서버 플랫폼들이 신뢰할 수 있는 카운터를 가지지 않을 수 있다.
API도 마찬가지로 보호될 수 있다. 그러므로, 해시 체인을 이용하는 일 실시예에 따른 보안 컴퓨터 장치의 접근 방식은 로그를 보호하는 보다 더 포터블한(portable) 방법일 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터의 기밀성(confidentiality) 및 무결성(integrity)을 MANIFEST로부터 산출된 한 쌍의 암호화 키 및 인증 키 및 MAC에 바인딩할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 완전한 보호를 위하여, 한 쌍의 암호화 키 및 인증 키 및 MAC를 안전하게 보유(예: 물리적으로 격리된 로컬 머신에 보유)할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 암호화된 백업으로부터 데이터를 복구하고 백업의 최신성을 검증하기 위하여 암호화 키와 MAC을 이용할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 실행되는 동안, KVS의 메타데이터가 포함된 MANIFEST 로그를 암호화하고 인증하기 위하여 한 쌍의 암호화 키 및 인증 키를 이용할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 사용하는 다른 암호화 키 및 인증 키는 런 타임 동안 EPC에 상주하는 영구 스토리지의 MANIFEST 내에 유지될 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 상당한 지연 없이도 키들을 이용할 수 있고, 나중에 스냅샷으로부터 데이터를 로드할 때 한 쌍의 암호화 키 및 인증 키 및 MANIFEST 로그 파일로부터 한 쌍의 암호화 키 및 인증 키의 복사본을 획득할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터의 기밀성을 보호하기 위하여 EPC의 외부에 저장된 모든 데이터를 암호화하고 EPC에서만 해독(decrypt)할 수 있다. 예를 들어, 스토리지에 저장된 로그 구조 병합 트리의 SSTable의 데이터는 EPC와 구별되는 휘발성 메모리(예: 도 1의 부분 메모리(123)) 및 비휘발성 메모리(예: 도 1의 스토리지(130)) 모두에서 암호화된 상태로 유지되고, 프로세서는 SSTable로부터 키 밸류 쌍을 획득할 때 EPC에서만 SSTable의 데이터를 해독할 수 있다. 프로세서는 예시적으로, 암호화 체계(scheme)로서 256비트 키를 사용하는 AES GCM 모드를 이용할 수 있다.
이하, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 LSM 트리에 맞게 조정된 인증 체계로 최신성을 보장하는 방법에 대하여 설명한다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 최신성 검증을 위한 SSTable에 대한 HMAC를 산출할 수 있다. 보안 컴퓨터 장치(TWEEZER)는, 압축 또는 플러시의 동작에서 새로운 SSTable을 생성할 때, 상기 생성된 새로운 SSTable에 대해 독점적으로 사용되는 새로운 인증 키를 생성할 수 있다. 보안 컴퓨터 장치는 생성된 새로운 인증 키를 EPC 및 MANIFEST에 저장할 수 있다. 프로세서는 새로운 SSTable의 키 밸류 쌍마다 MAC을 산출할 수 있다. 프로세서는 암호화된 데이터와 함께 산출된 MAC을 비휘발성 메모리에 저장할 수 있다.
도 4에서 후술하겠으나, 프로세서는 키 밸류 쌍을 조회하기 위하여 LSM 트리의 대상 테이블(예: SSTable)을 읽을 때, EPC에 저장된 복수의 SSTable 들에 대한 인증 키들 중에서 대상 테이블에 매핑된 대상 인증 키를 획득할 수 있다. 프로세서는, 획득된 대상 인증 키를 이용하여 산출된 비교 MAC 및 대상 테이블에 저장된 기준 MAC와 비교함으로써 무결성을 검증할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치는, SSTable에 매핑된 인증 키 및 불변 확인을 통해, MAC에 기초한 키 밸류 쌍들의 최신성을 보장할 수 있다. 프로세서는 동일한 MAC을 산출하기 위하여 EPC에 저장된 SSTable에 매핑된 인증 키를 필요로 할 수 있다. 공격자는 EPC에 저장된 인증 키에 액세스할 수 없으므로 키 밸류 쌍에 대해 올바른 MAC을 생성하는 것이 어려울 수 있다.
공격자는 데이터 및 MAC의 쌍들을 획득할 수 있고, 획득된 쌍들을 리플레이(replay)할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치가 단일 인증 키를 사용하여 여러 SSTable들(SST 0 ,··· ,SST n )에 대한 MAC을 생성할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치에 대하여, 공격자는 SSTable 및 대응하는 MAC의 쌍들((SST 0 ,MAC 0 ),···,(SST n , MAC n ))을 획득하고 검증을 우회하기 위하여 SSTable 및 MAC의 쌍들 중 하나를 제시할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치는 인증 키에 기초하여 산출된 MAC가 공격자에 의하여 제시된 MAC과 일치하기 때문에, 리플레이된 쌍을 승낙(accept)할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치는 리플레이된 쌍을 승낙하지 않기 위하여, 리플레이를 감지하기 위한 추가적인 수단(예: Merkle 트리)을 이용하는 것이 요구될 수 있다.
이와 달리, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 각 SSTable에 매핑된 인증 키의 고유성 및 SSTable의 불변성을 활용하여 최신성을 보장할 수 있다. 보안 컴퓨터 장치는 모든 SSTable들을 스패닝하는 Merkle 트리를 구성하는 것이 필요하지 않을 수 있다. 프로세서는, 구별되는(distinct) 인증 키를 이용함으로써, 서로 다른 키들로 인증된 데이터의 세트들 간의 리플레이를 방지할 수 있다. 다만, 공격자는 잠재적으로 스위칭하거나 리플레이할 수 있는 데이터 조각들을 가질 수 있기 때문에, 하나의 키를 공유하는 데이터 내의 리플레이는 방지되기 어려울 수 있다. 특히, 공격자는 더 오래된 버전의 데이터 청크를 재사용(예: 시간적(temporal) 리플레이)하거나 또는 동일한 키로 인증된 데이터 청크를 재사용(예: 공간적(spatial) 리플레이)할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 SSTable의 불변성을 이용하여 각 SSTable에 대한 시간적 리플레이를 방지할 수 있다. 프로세서는 LSM 트리의 키 밸류 쌍의 업데이트를 위하여 SSTable을 수정하지 않을 수 있다. 대신에, 프로세서는 업데이트된 키 밸류 쌍을 기존 키 밸류 쌍의 SSTable의 레벨보다 더 낮은 레벨의 SSTable에 저장할 수 있다. 프로세서는 기존 키 밸류 쌍 및 업데이트된 키 밸류 쌍을 서로 다른 SSTable에 저장할 수 있다. 프로세서는 기존 키 밸류 쌍 및 업데이트된 키 밸류 쌍은 서로 다른 인증 키에 기초하여 인증될 수 있으므로, 공격자는 업데이트를 롤백하기 위하여 기존 키 밸류 쌍을 사용하는 것이 불가능할 수 있다. 키 밸류 쌍에 대한 업데이트의 롤백하기 위하여, 업데이트된 키 밸류 쌍의 SSTable에 매핑된 인증 키에 기초하여 기존 키 밸류 쌍에 대한 MAC이 요구될 수 있다. 그러나, 일 실시예에 따른 보안 컴퓨터 장치는 업데이트된 키 밸류 쌍의 SSTable에 매핑된 인증 키에 기초하여 기존 키 밸류 쌍에 대한 MAC을 산출한 적이 없기 때문에, 공격자는 상기 MAC를 가지는 것이 불가능할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치의 성능 향상은 Merkle 트리 없는 인증의 낮은 EPC 사용량으로부터 비롯될 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 메모리 내에서, EPC 내에서 실행될 때 엔클레이브(예: Scone)에서, 보관하는 각 SSTable의 푸터 블록에 MAC을 저장할 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치가 비휘발성 메모리에서 SSTable을 읽을 때마다 Merkle 트리를 따라 MAC을 산출하는 경우, SSTable의 HMAC 산출의 비용을 고려할 때 읽기 대기 시간은 크게 증가될 수 있다. 따라서, 비교 실시예에 따른 보안 컴퓨터 장치는, 특히 LSM 트리의 사이즈가 큰 경우, MAC 캐싱을 수행할 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치는, SSTable 읽기마다 Merkle 트리를 따라 일련의 MAC들을 산출하는 것을 피하기 위하여, 각 데이터 블록에 대한 MAC를 EPC에 캐시되어야 할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치에서, MAC를 EPC에 캐시하기 위한 비용은, 적은 수의 SSTable들에 대하여 작게 유지될 수 있지만, SSTable의 개수가 증가함에 따라 빠르게 증가할 수 있다. 각 SSTable에 대한 추가적인 EPC 사용량은 설정에 따라 다를 수 있지만, 예시적으로, 데이터 블록의 크기가 4KB이고 밸류의 크기가 128B인 경우 각 64MB의 SSTable에 대해 약 840KB일 수 있다. 중복이 없다고 가정하더라도, 비교 실시예에 따른 보안 컴퓨터 장치가 64GB의 키-값 쌍들을 포함하는 경우, 추가적인 EPC 사용량은 대략적으로 총 840MB가 될 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치의 추가적인 EPC 사용량은, 128MB 또는 256MB의 EPC의 크기를 고려할 때, 상당한 오버헤드를 초래할 수 있다.
도 12에서 후술하겠으나, 각각의 SSTable에 매핑된 인증 키는 대형 KVS를 제공할 때 보안 컴퓨터 장치가 EPC에 너무 많은 데이터를 저장하는 것을 방지할 수 있다.
도 3은 일 실시예에 따른 데이터 블록 및 비교 실시예에 따른 데이터 블록을 나타낸다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 읽기 증폭(read amplification)을 피하기 위하여 키 밸류 쌍을 개별적으로 인증할 수 있다. 도 2의 (2)에서 전술한 바와 같이, SSTable은 일반적으로 3 내지 28개의 키 밸류 쌍들을 포함하는 복수의 데이터 블록들을 포함할 수 있다. SSTable에 포함된 데이터 블록들은, 버스트 데이터 전송에 최적화된 스토리지 장치들을 고려한 설계 선택일 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 데이터 블록(310)을 암호화 및 인증 단위로 이용할 수 있다. 도 3의 데이터 블록(310)에 나타난 바와 같이, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 데이터 블록(310)에 대해 하나의 MAC(317)을 산출하고 결과를 SSTable의 푸터 블록에 저장할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치는, 하나의 키 밸류 쌍만 읽는 경우에도 데이터 블록 전체에 대한 MAC을 산출해야 하기 때문에, 암호화 및 인증 비용은 내재된(inherent) 읽기 증폭을 보다 더 비싸게 만들 수 있다. 또한, 비교 실시예에 따른 보안 컴퓨터 장치는, 검증된 데이터 블록에 대한 비싼 검증을 반복하여 귀중한 EPC를 소모하는 것을 방지하기 위하여 검증된 데이터 블록을 EPC에 상주시킬 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치에서, 데이터 블록 수준의 해독 및 인증은 블록 캐시의 잠재적 위치를 EPC로 제한할 수 있고, 대용량 데이터가 저장된 경우 확장성 병목 현상을 초래할 수 있다.
이와 달리, 도 3의 데이터 블록(320)에 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 데이터 블록(320)은 세분화된 암호화 및 인증을 위해 재배열될 수 있다. 데이터 블록(320)은 키 블록(321) 및 밸류 블록(323)을 포함할 수 있다. 밸류 블록(323)은, 키 밸류 쌍의 밸류에 관한 블록으로서, 데이터 블록(320)의 모든 밸류들(예: 밸류(323a)) 및 밸류들 각각에 대응하는 객체 키 및 밸류 모두에서 산출된 MAC(예: MAC(327a))를 함께 포함할 수 있다. 키 블록(321)은 키 밸류 쌍의 객체 키에 관한 블록으로서, 밸류 블록(323)에 있는 밸류의 오프셋(offset)과 함께 객체 키들의 시퀀스를 포함할 수 있다. 일 실시예에 따른 데이터 블록(320)의 구조조정(restructure)은 두 가지 이점을 가질 수 있다. 첫째, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 단일 키 밸류 쌍을 획득하기 위하여 데이터 블록 전체의 최신성을 검증할 필요가 없으므로, 감소된 읽기 대기 시간을 가질 수 있다. 둘째, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 암호화된 데이터 블록에서 단일 키 밸류 쌍을 직접 읽을 수 있기 때문에, 크기 제한이 없는 EPC와 구별되는 휘발성 메모리(예: 도 1의 부분 메모리(123))에 블록 캐시를 배치할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 키 밸류 쌍들의 최신성을 검증하기 위하여 LSM 트리의 불변 순서를 활용할 수 있다. RocksDB의 SSTable의 각 데이터 블록은, 정리된(ordered) 키 밸류 쌍들의 시퀀스를 포함하고, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 키 블록(321)의 객체 키들도 마찬가지일 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 MemTable 또는 상위 레벨의 SSTable에서 키가 검색되지 않는 경우, SSTable의 데이터 블록을 읽을 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 먼저 일반 텍스트로 EPC 내에 유지되는 SSTable의 인덱스 블록을 먼저 참조(consult)할 수 있다. RocksDB 설계에 의하여, LSM 트리의 각 데이터 블록(Bi)는 인덱스 블록의 인덱스 키(ki)와 연관될 수 있다. 데이터 블록(Bi)의 객체 키는 인덱스 키(ki)보다 작지 않고 다음 데이터 블록(Bi+1)의 인덱스 키(ki+1)보다 크지 않을 수 있다. 이를 활용하여, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 검색 중인 객체 키가 잠재적으로 포함된 데이터 블록을 획득하기 위하여 인덱스 키에 대해 이진 검색을 수행할 수 있다.
알고리즘 1은 일 실시예에 따른 키 블록의 순서를 검증하는 것을 나타낸다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 획득된 데이터 블록에서 객체 키를 검색하기 위하여, 객체 키를 찾기 전에 데이터 블록의 키 블록의 순서를 해독하고 검증할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 프로세서는, 객체 키가 검색되는 경우, MAC으로 암호화된 값을 획득하기 위하여 키와 연관된 오프셋을 이용할 수 있다. 프로세서는, SSTable의 인증 키, 쿼리된 객체 키, 및 밸류를 이용하여 MAC을 산출할 수 있다. 프로세서는 산출된 MAC를 저장된 MAC과 비교함으로써, 키 밸류 쌍의 최신성을 검증할 수 있다.
프로세서는, 객체 키가 검색되지 않는 경우, 객체 키가 해당 레벨에 존재하지 않는 것으로 판단하고 다음 레벨로 이동할 수 있다. 프로세서는 키 블록에 대해 MAC 기반 인증을 수행하지 않음에도 불구하고, 순서 검증(예: 알고리즘 1에 따른 순서 검증)을 통해 객체 키가 데이터 블록에 존재하지 않는 것으로 속이는 오류 공격(fault attack)을 효과적으로 완화할 수 있다.
전술한 바와 같이, 데이터 블록의 모든 객체 키들은 해당 데이터 블록의 인덱스 키보다 크고 다음 블록의 인덱스 키보다 작아야 할 수 있다. 알고리즘 1의 3행 내지 7행에서, 프로세서는 키 블록의 첫 번째 객체 키 및 마지막 객체 키를 인덱스 키들과 비교함으로써, 불변성(invariant)을 확인할 수 있다. 알고리즘 1의 13 내지 21행에서, 프로세서는 키 블록 내의 순서를 검증하기 위해 키 블록의 각 객체 키를 인접한 객체 키와 비교할 수 있다. 결과적으로 키 블록에 오류를 삽입하려는 시도에 대하여, 프로세서는 키 블록을 다른 키 목록으로 해석하게 만들 수 있고, 따라서 목록이 순서 불변성을 충족할 가능성이 거의 없게 만들 수 있다. 공격이 성공할 확률은 매우 낮을 수 있다. 구체적으로, 프로세서가 b-byte의 객체 키들을 이용하고 두 인덱스 키들 간의 차이가 D인 경우, 공격 성공 확률은 대략 정도로 작을 수 있다. 예를 들어, D가 264이고 b가 16일 때 공격 성공 확률은 약 5.42·10-20(또는 약 2-64)일 수 있다. 불변성 기반의 최신성 보호 덕분에, 키 밸류 쌍을 읽는 비용은 키 블록의 암호 해독 1회, 밸류 엔트리 암호 해독 1회, 키 밸류 쌍의 MAC 산출 1회로 작아질 수 있다. 일 실시예에 따른 보안 컴퓨터 장치는, MAC 동작이 읽기 성능을 지배하기 때문에, 데이터 블록이 10개의 키 밸류 쌍들을 포함하는 경우, 데이터 블록 수준의 인증 체계의 잠재적 비용보다 대략 10배 더 적은 비용을 가질 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 세분화된 암호화 및 인증을 통해 블록 캐시를 EPC와 구별되는 EPC의 외부에 배치할 수 있다. 신뢰할 수 없는 EPC의 외부에 배치된 블록 캐시는 LSM 트리에 대용량 데이터가 저장될 때 유용할 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치는, 블록 캐시를 EPC 내부에 배치하고 로딩된 블록이 암호화되지 않기 때문에, 블록 캐시를 EPC에도 남길 수 있다. 블록 캐시를 EPC에 남기는 것은 LSM 트리에 소량의 데이터가 저장되는 경우, 성능 병목 현상을 초래하지 않을 수 있다. 그러나, RocksDB는 많은 양의 데이터를 제공하기 위해 프로덕션에서 큰 블록 캐시를 갖도록 구성되는 경우가 많고, 이 경우 EPC 내의 블록 캐시가 확장되지 않을 수 있다. 블록 캐시는 여전히 EPC와 구별되는 EPC의 외부에 배치될 수 있지만, 단일 캐시 히트마다 전체 데이터 블록의 암호 해독 및 검증이 트리거되기 때문에 블록 캐시 히트 대기 시간은 크게 증가할 수 있다.
대조적으로, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 취하는 세분화된 암호화 및 인증 접근 방식은, EPC와 구별되는 신뢰할 수 없는 EPC의 외부에 있는 블록에서 EPC로 데이터의 작은 부분만을 가져오는 것을 포함할 수 있다.
이하, 일 실시예에 따른 보안 컴?D터 장치에서 키 밸류 쌍의 삽입 동작(insertion operation), 조회 동작(lookup operation), 범위 동작(range operation)에 대하여 설명한다.
먼저, 일 실시예에 따른 보안 컴퓨터 장치에서 키 밸류 쌍의 삽입 동작(또는 넣기 동작(put operation)으로도 표현됨)을 설명한다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 키 밸류 쌍을 지속성(persistence)을 위해 WAL에 삽입하고 효율적인 조회를 위해 MemTable에 삽입함으로써, 삽입 요청(insertion request)(또는 넣기 요청(put request)라고도 표현됨)을 처리할 수 있다. 프로세서는 새로운 키 밸류 쌍을 먼저 전용 로그 키로 암호화시킬 수 있다. 프로세서는 암호화된 키 밸류 쌍을 WAL의 이전 엔트리의 MAC과 함께 해당 키 밸류 쌍에 대한 MAC을 산출하는 데 사용할 수 있다. 프로세서는 암호화된 키 밸류 쌍을 산출된 MAC과 함께 WAL에 저장할 수 있다.
일 실시예에 따른 프로세서는, 암호화 동작들을 제외하고 MemTable에 키 밸류 쌍을 삽입할 때 RocksDB의 절차와 유사한 절차를 따를 수 있다. 예를 들어, 프로세서는 MemTable을 EPC(예: 도 1의 EPC(121)) 및 신뢰할 수 없는 휘발성 메모리(예: 도 1의 부분 메모리(123)) 모두에 저장할 수 있다. 프로세서는 새로운 키 밸류 쌍의 밸류가 EPC의 내부 노드를 사용하여 저장될 신뢰할 수 없는 휘발성 메모리의 위치를 찾고 찾아진 신뢰할 수 없는 휘발성 메모리의 위치에 암호화된 밸류를 저장할 수 있다. 프로세서는 새로 저장된 밸류에 대한 MAC를 무결성 검증을 위해 EPC에 보관할 수 있다.
도 4는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 EPC에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다. 이하, 도 4를 참조하여 일 실시예에 따른 객체 키가 EPC에서 검색되는 경우 조회 동작(lookup operation)을 설명한다.
단계(410)에서, 프로세서는 사용자로부터 객체 키를 포함하는 조회 요청(lookup request)(또는 획득 요청(get request)라고도 표현됨)을 수신할 수 있다. 객체 키를 포함하는 조회 요청은, 보안 컴퓨터 장치의 메모리 및 스토리지에 해당 객체 키를 가지는 키 밸류 쌍의 밸류의 반환 요청을 나타낼 수 있다. 프로세서는, 객체 키를 포함하는 조회 요청에 응답하여, 보안 컴퓨터 장치의 메모리 및 스토리지로부터 객체 키가 검색되는 경우 객체 키에 대응하는 밸류를 반환하고, 객체 키가 검색되지 않는 경우 객체 키가 검색되지 않는 것을 지시하는 데이터를 반환할 수 있다.
단계(420)에서, 프로세서는 객체 키를 메모리의 EPC에 저장된 테이블에서 검색할 수 있다. EPC(예: 도 1의 EPC(121))는, 휘발성 메모리(예: 도 1의 메모리(120))의 일부를 포함할 수 있다. 프로세서는, EPC의 MemTable의 객체 키들 중에서, 조회 요청에 포함된 객체 키를 검색할 수 있다. EPC에 저장된 테이블에서 객체 키가 검색되는 경우 조회 동작은 도 5에서 후술한다.
단계(430)에서, 프로세서는 EPC에 저장된 테이블에서 검색되지 않는 경우, 스토리지에 저장된 로그 구조 병합 트리의 테이블에서 객체 키를 검색할 수 있다. 프로세서는 비휘발성 메모리에 저장된 로그 구조 병합 트리의 테이블(예: SSTable)에서 객체 키를 검색할 수 있다. 프로세서는 LSM 트리를 탐색함으로써, 요청된 객체 키를 갖는 키 밸류 쌍을 LSM 트리에서 발견하거나 요청된 객체 키가 LSM 트리에 존재하지 않는 것을 결정할 수 있다.
일 실시예에 따른 프로세서는 스토리지에 저장된 상기 로그 구조 병합 트리의 최소 레벨에서부터 상기 객체 키의 검색을 시작할 수 있다. 프로세서는, 객체 키를 검색 중인 레벨에서 객체 키가 검색되지 않은 경우, 검색 중인 레벨의 다음 레벨에서 객체 키를 재검색할 수 있다. 프로세서는, 객체 키를 검색 중인 레벨에서 객체 키가 검색된 경우, 객체 키의 검색을 종료할 수 있다.
프로세서는 LSM 트리의 낮은 레벨의 테이블에서부터 높은 레벨의 테이블로, LSM 트리의 대상 테이블을 찾을 수 있다. 대상 테이블은 요청된 객체 키를 포함할 가능성을 가지는 LSM 트리의 테이블을 나타낼 수 있다. 프로세서는 LSM의 대상 테이블에서 상기 요청된 객체 키를 검색할 수 있다.
예를 들어, 프로세서는 대상 테이블의 복수의 데이터 블록들 중에서 객체 키를 포함할 가능성을 가지는 대상 데이터 블록을 결정할 수 있다. 프로세서는 대상 테이블의 인덱스 블록에 기초하여 대상 데이터 블록을 결정할 수 있다. 대상 테이블의 인덱스 블록은, 대상 테이블의 복수의 데이터 블록들에 포함된 객체 키의 범위를 지시할 수 있다.
프로세서는 스토리지로부터 대상 데이터 블록의 암호화된 키 블록을 획득할 수 있다. 프로세서는 획득된 키 블록을 EPC에서 해독할 수 있다. 프로세서는 해독된 키 블록에 대하여 키 블록의 순서를 검증할 수 있다. 대상 데이터 블록의 키 블록은 복수의 키 밸류 쌍들의 객체 키들을 가질 수 있다. 전술한 바와 같이, 키 블록의 객체 키들은 정렬된 상태로 저장될 수 있다. 프로세서는 키 블록의 객체 키들의 순서를 확인함으로써, 키 블록의 순서를 검증할 수 있다. 예를 들어, 키 블록의 객체 키들이 오름차순으로 정렬된 경우, 키 블록의 순서는 검증될 수 있다. 다른 예를 들어, 키 블록의 객체 키들이 오름차순으로 정렬되지 않은 경우, 키 블록의 순서는 검증되지 못할 수 있다.
프로세서는 대상 데이터 블록의 키 블록의 순서가 검증되지 못한 경우, 대상 데이터 블록에 대한 무결성이 검증되지 않은 것으로 결정할 수 있다. 예를 들어, 프로세서는 키 블록의 객체 키들이 정렬되지 않은 경우, 대상 데이터 블록의 키 블록에 대한 공격(예: 공간적 리플레이)을 감지할 수 있다.
프로세서는 대상 데이터 블록의 키 블록의 순서가 검증된 경우, 키 블록에서 객체 키를 검색할 수 있다. 프로세서는, 대상 데이터 블록의 키 블록에서 객체 키가 검색되지 않은 경우, 대상 테이블의 다음 레벨의 테이블을 대상 테이블로 변경하여 객체 키를 재검색할 수 있다.
단계(440)에서, 프로세서는 객체 키가 스토리지에 저장된 LSM 트리의 대상 테이블에서 검색된 경우, 스토리지로부터 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드를 획득할 수 있다. 프로세서는, 객체 키가 대상 데이터 블록의 키 블록에서 검색된 경우, 대상 데이터 블록의 밸류 블록으로부터 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드를 획득할 수 있다.
단계(450)에서, 프로세서는 기준 메시지 인증 코드에 기초하여 획득된 밸류의 무결성을 검증할 수 있다.
프로세서는, EPC로부터, LSM 트리의 테이블들에 매핑된 인증 키들 중에서 대상 인증 키를 획득할 수 있다. 대상 인증 키는, 대상 테이블에 매핑된 인증 키를 나타낼 수 있다. 전술한 바와 같이, 각 LSM 트리의 테이블은 고유한 인증 키에 매핑될 수 있고, 인증 키는 EPC에 저장될 수 있다. 프로세서는, 대상 테이블의 대상 데이터 블록의 밸류 블록에서 획득된 밸류의 무결성을 검증하기 위하여, 대상 테이블에 매핑된 대상 인증 키를 이용하여 비교 메시지 인증 코드를 산출할 수 있다.
프로세서는, 대상 인증 키 및 밸류에 기초하여, 비교 메시지 인증 코드를 산출할 수 있다. 전술한 바와 같이, 대상 인증 키는 EPC로부터 획득될 수 있고, LSM 트리의 대상 테이블에서 객체 키가 검색된 경우 밸류는 스토리지로부터 획득될 수 있다.
프로세서는, 산출된 비교 메시지 인증 코드를 기준 메시지 인증 코드와 비교함으로써 밸류의 무결성을 검증할 수 있다. 전술한 바와 같이, LSM 트리의 대상 테이블에서 객체 키가 검색된 경우, 기준 메시지 인증 코드는 스토리지로부터 획득될 수 있다. 기준 메시지 인증 코드는, 스토리지의 LSM 트리의 대상 테이블의 대상 데이터 블록의 밸류 블록으로부터 획득될 수 있다. 비교 메시지 인증 코드와 기준 메시지 인증 코드가 일치하는 경우 밸류의 무결성은 검증될 수 있고, 비교 메시지 인증 코드와 기준 메시지 인증 코드가 일치하지 않는 경우 밸류의 무결성이 검증되지 못할 수 있다.
프로세서는, 밸류의 무결성이 검증된 경우, 조회 요청에 대하여 밸류로 응답할 수 있다. 예를 들어, 프로세서는 무결성이 검증된 밸류를 사용자에게 송신할 수 있다. 프로세서는, 밸류의 무결성이 검증되지 못한 경우, 조회 요청에 대하여 밸류의 무결성이 검증되지 못한 것을 지시하는 데이터를 송신할 수 있다.
도 5는 일 실시예에 따른 프로세서에 의하여 수행되는, 객체 키가 비휘발성 메모리에서 검색되는 경우 조회 동작(lookup operation)을 설명하기 위한 흐름도다. 이하, 도 5를 참조하여 일 실시예에 따른 객체 키가 비휘발성 메모리에서 검색되는 경우 조회 동작(lookup operation)을 설명한다.
도 4에서 전술한 바와 같이, 단계(420)에서, 프로세서는 객체 키를 메모리의 EPC에 저장된 테이블에서 검색할 수 있다.
단계(510)에서, 프로세서는 객체 키가 EPC에 저장된 테이블에서 검색된 경우, EPC로부터 기준 메시지 인증 코드 및 대상 인증 키를 획득할 수 있다. 객체 키가 EPC에 저장된 테이블에서 검색된 경우, 객체 키에 대응하는 메시지 인증 코드는 EPC로부터 획득될 수 있다. 대상 인증 키는, 객체 키가 EPC에 저장된 테이블에서 검색된 경우 EPC에 저장된 테이블(예: MemTable)에 매핑된 인증 키로서, EPC로부터 획득될 수 있다.
단계(520)에서, 프로세서는 메모리의 부분 메모리로부터 밸류를 획득할 수 있다. 프로세서는, 객체 키가 EPC에 저장된 테이블에서 검색된 경우, 객체 키에 대응하는 밸류를 부분 메모리로부터 획득할 수 있다.
단계(530)에서, 프로세서는 기준 메시지 인증 코드에 기초하여 밸류의 무결성을 검증할 수 있다.
프로세서는 대상 인증 키 및 밸류에 기초하여, 비교 메시지 인증 코드를 산출할 수 있다. 전술한 바와 같이, 대상 인증 키는 EPC로부터 획득될 수 있고, 밸류는 객체 키가 EPC에 저장된 테이블에서 검색된 경우 메모리의 부분 메모리로부터 획득될 수 있다.
프로세서는, 산출된 비교 메시지 인증 코드를 기준 메시지 인증 코드와 비교함으로써 밸류의 무결성을 검증할 수 있다. 전술한 바와 같이, 객체 키가 EPC에 저장된 테이블에서 검색된 경우, 기준 메시지 인증 코드는 EPC로부터 획득될 수 있다. 비교 메시지 인증 코드와 기준 메시지 인증 코드가 일치하는 경우 밸류의 무결성은 검증될 수 있고, 비교 메시지 인증 코드와 기준 메시지 인증 코드가 일치하지 않는 경우 밸류의 무결성이 검증되지 못할 수 있다.
프로세서는, 밸류의 무결성이 검증된 경우, 조회 요청에 대하여 밸류로 응답할 수 있다. 예를 들어, 프로세서는 무결성이 검증된 밸류를 사용자에게 송신할 수 있다.
마지막으로, 일 실시예에 따른 보안 컴퓨터 장치에서 범위 동작(range operation)을 설명한다.
일 실시예에 따른 프로세서는 객체 키의 범위를 포함하는 범위 요청(range request)를 수신할 수 있다.
프로세서는 반복자들(iterators)을 생성할 수 있다. 프로세서는 반복자들을 통해 여러 레벨들의 데이터 블록들을 순회함으로써 범위 요청을 처리할 수 있다.
프로세서는 시작 객체 키를 검색할 수 있다. 프로세서는 조회 요청을 처리하기 위한 동작들을 수행함으로써 각 레벨에서 반복자들을 초기화할 수 있다. 각 순회에 대하여, 프로세서는 EPC에 저장된 테이블(MemTable)을 검색한 이후에 스토리지에 저장된 LSM 트리를 검색함으로써, 키 밸류 쌍의 최신 버전을 결정할 수 있다. 프로세서는 객체 키가 EPC에 저장된 테이블(MemTable)에서 검색되는 경우, 조회 요청을 처리할 때와 유사하게, 밸류의 무결성을 검증하고 밸류를 해독할 수 있다. 프로세서는 객체 키가 LSM 트리에서 검색된 경우, 키 밸류 쌍을 찾은 경우에도 Range 쿼리는 유사하게 처리될 수 있고, 프로세서는 전술한 바와 같이 특정 레벨에서 객체 키의 부재(absence)를 검증할 수 있다.
일 실시예에 따른 프로세서는 RocksDB가 구현하는 것과 동일한 복구 체계를 따를 수 있다. 상술한 복구 체계는 사전 공유 자격 증명(pre-shared credentials)(다시 말해, 한 쌍의 암호화 키 및 인증 키 및 MAC)을 이용하여 추가 해독 및 검증을 가질 수 있다. 이를 위해, 프로세서는 KVS를 구성하는 파일들 외에 자격 증명을 입력으로 이용할 수 있다. 프로세서가 해독하고 검증하는 첫 번째 데이터 조각은 전술한 MANIFEST 로그일 수 있다. 결과적으로, 프로세서는 나머지 데이터 청크를 해독하고 검증하기 위하여 필요한 암호화 키들 및 파일들에 걸친 최신 MANIFEST를 획득할 수 있다. 특히, 프로세서는 버전 편집이라고 불리는 복구되고 검증된 MANIFEST 업데이트 로그로부터 암호화 키들을 획득할 수 있다. 각 버전 편집은 SSTable 생성, SSTable 삭제, 로그 항목 생성, 또는 로그 항목 삭제와 같은 KVS 구조에 대한 변경들을 가질 수 있다. 프로세서는 SSTable별 인증 키들 또는 로그 암호화 키와 같은 사용되는 추가적인 비밀 키들로 이러한 레코드를 확장할 수 있다. 추가적인 복호화 또는 검증 단계를 제외하고, 복구는 RocksDB의 체계에 따라 수행될 수 있다. 복구 후에, 프로세서는 스냅샷의 정확한 버전을 나타내는 하트비트 데이터를 원격 사용자에게 제공할 수 있다.
이하, 일 실시예에 따른 보안 컴퓨터 장치가 잠재적인 공격들에 대해 데이터의 무결성 및 최신성을 보장하는 방법에 대해 설명한다.
리플레이 공격(Replay Attack)은, 데이터 무결성에 대한 일반적인 공격 전략으로서, 기존 암호화된 데이터 및 MAC의 쌍들의 재사용을 포함할 수 있다. 전술한 바와 같이, 공격자는 EPC와 구별되는 EPC의 외부(예: 도 1의 부분 메모리(123) 및 스토리지(130))에 대한 전체 액세스 권한을 가질 수 있으므로, 공격자는 EPC와 구별되는 EPC의 외부에 저장된 데이터 및 MAC의 쌍을 획득할 수 있다. 공격자는 데이터 청크(예: MANIFEST 로그, WAL, SSTable 또는 개별 키 밸류 쌍)에 대한 리플레이 공격을 시도할 수 있다.
리플레이 공격(Replay Attack)은 로그 리플레이(log replay)를 포함할 수 있다. MANIFEST 로그 및 WAL은 해시 체인에 의하여 보호될 수 있다. 사용자는 일 실시예에 따른 보안 컴퓨터 장치에 의하여 첫 번째 해시로 이용되는 논스(nonce)와 함께 MAC 산출 및 한 쌍의 암호화 키 및 인증 키를 가지고 있는 것이 가정될 수 있다. 일 실시예에 따른 프로세서가 스냅샷에서 복구할 때, 프로세서는 각 로그 엔트리가 리플레이된 블록인지 또는 MAC 검증을 통하지 않았는지 여부를 다음과 같은 이유로 올바르게 결정할 수 있다.
공격자는 로그 엔트리들(b0,···, bn)의 목록에서 i번째 블록 bi을 리플레이하고 검증 절차를 통과하기 위하여, 올바른 MAC 키를 이용하여 hi-1||b'i에서 산출된 MAC M'i를 생성하거나 획득해야 할 수 있다. 여기서, b'i는 리플레이된 블록을 나타내고, hi-1은 i-1번째 블록의 올바른 MAC를 나타낼 수 있다. 그러나 공격자는 MAC 키(또는, MAC 인증 키)의 고유성 및 로그의 블록으로 인해 이러한 Mi를 획득하는 것이 불가능할 수 있다. MAC 키를 이용하여 산출된 대응하는 MAC를 갖는 데이터 청크는, 로그 엔트리들만을 포함할 수 있다. 따라서, 공격자는 b'i로서 b0,···,bn 중에서 하나의 블록을 선택할 수 있다. 공격자가 bj를 b'i로 선택하는 경우, 공격자가 사용 가능한 유일한 MAC은 hj-1||bj에서 계산된 MAC이며, j i일 때 hj-1 hi-1이므로 검증 절차를 통과하지 않을 수 있다
리플레이 공격(Replay Attack)은 키 밸류 쌍 리플레이(Key Value Pair Replay)를 포함할 수 있다.
일 실시예에 따른 프로세서는 MAC을 이용하여 무결성(또는 최신성)을 검증할 때, 전체 SSTable 및 개별 키 밸류 쌍에 대한 공격을 감지할 수 있다. 키 밸류 쌍 리플레이의 시나리오에서, 공격자의 전략은 세 개의 클래스로 분류될 수 있다.
첫째, 공격자는 하나의 SSTable을 전체적으로 다른 것으로 교체하려고 시도할 수 있다. 일 실시예에 따른 프로세서는, 스토리지에 저장된 SSTable로부터 데이터 블록들을 획득할 때, 공격자의 시도를 감지하고 MAC 산출을 통해 데이터 블록을 검증할 수 있다. 공격자는, 리플레이하려는 키 밸류 쌍에 대하여 타겟 SSTable의 인증 키에 기초하여 MAC을 산출한 적이 없기 때문에, 적절한 MAC을 획득하는 것이 불가능할 수 있다. 각 SSTable은 고유한 인증 키로 인증되므로, 다른 SSTable의 키 밸류 쌍과 연관된 MAC은 검증 절차에서 잘못된 것으로 간주될 수 있다.
둘째, 공격자는 하나의 SSTable 내에서 데이터 청크 리플레이를 시도할 수 있다. 전술한 바와 같이, 일 실시예에 따른 프로세서는 LSM 트리에서 SSTable의 불변 순서를 통해 데이터 청크 리플레이를 감지할 수 있다. 공격자는 키 블록 내에서 리플레이를 수행하는 경우, 필연적으로 순서를 깨뜨릴 수 있다. 예를 들어, 공격자가 두 개의 객체 키(k1, k2)를 스위칭함으로써 객체 키(k1)이 객체 키(k2)보다 먼저 나타나도록 조작하는 경우, 객체 키(k2)를 객체 키(k1)보다 먼저 나타나는 불변 순서를 깨뜨릴 수 있다. 참고로, 객체 키를 복제하는 것은, LSM 트리의 레벨 당 객체 키는 최대 한 번 포함될 수 있다는 고유성 원칙을 깨뜨리기 때문에 선택 사항이 아닐 수 있다.
셋째, 공격자는 SSTable의 키 블록 전체를 리플레이를 시도할 수 있다. 다만, 키 블록의 리플레이는 SSTable의 객체 키 세트를 연속적이고 상호 연결되지 않은 범위로 분할하는 SSTable의 인덱스 블록의 인덱스 키의 속성을 위반할 수 있다.
롤백 공격(Rollback Attack)은, 특정 시점에서 데이터의 스냅샷을 찍고 이후에 보안 컴퓨터 장치 또는 사용자에게 최신 버전의 정품으로 제공하는 것을 포함할 수 있다. 일 실시예에 따른 프로세서는 하트비트 트랜잭션의 세분성(granularity)에서 최신 버전의 데이터를 보장할 수 있다. 프로세서가 실행되는 동안 공격자가 수행하는 온라인 롤백 공격은 공격자가 EPC에 저장된 데이터를 교체할 수 없기 때문에 실행 불가능할 수 있다. 그러나 공격자가 보안 컴퓨터 장치의 파일을 이전 버전으로 교체하는 오프라인 롤백 공격은 현실적인 위협이 될 수 있다. 오프라인 롤백 공격을 막기 위해 일 실시예에 따른 프로세서는 주기적으로 쓰기 트랜잭션을 발행할 수 있다. 프로세서는, 버전을 타임스탬프(timestamp)하기 위하여, 사용자와의 주기적 상호 작용에 의존할 수 있다. 프로세서는 하트비트 트랜잭션의 결과 키 밸류 쌍에 기초하여 스냅샷의 버전을 결정할 수 있다. 프로세서는 추가 타임스탬프를 통해 다른 검증 메커니즘들이 공격자에 의한 스냅샷 위조를 방지함으로써, 롤백 복원력을 가질 수 있다. 프로세서는 복구할 스냅샷이 제공되면 MANIFEST 로그에서 시작하여 루트의 한 쌍의 암호화 키 및 인증 키를 사용하여 최신 상태를 검증할 수 있다. 공격자는 루트의 한 쌍의 암호화 키 및 인증 키를 가지지 않으므로, 이전 버전의 스냅샷을 수정하는 것이 불가능할 수 있다. 또한, 공격자가 이전 버전의 정확한 사본을 제시하는 경우, 프로세서는 검증된 복구 이후의 하트비트 트랜잭션들의 키 밸류 쌍들에 기초하여 제시된 사본의 버전을 올바르게 결정할 수 있다.
존재 공격(Existence Attack)은, 특정 객체 키가 실제로 SSTable에 포함되는 데도 포함되지 않는다고 속이려는 시도를 포함할 수 있다. 일 실시예에 따른 프로세서는, 하위 레벨에서 획득된 키 밸류 쌍을 상위 레벨에서 획득된 키 밸류 쌍보다 더 이전 버전으로 고려할 수 있다. LSM 트리 기반 KVS는 새로운 키 밸류 쌍을 LSM 트리의 상위 레벨에 추가하고 기존 키 밸류 쌍은 하위 레벨에 남겨둠으로써 업데이트 요청을 처리할 수 있다. 존재 공격을 수행하는 공격자는 먼저 희생자(victim) 객체 키가 포함된 키 블록을 찾고, 검증을 통과하는 유효한 키 블록을 위조해야 할 수 있다. 일 실시예에 따른 프로세서는, 암호화를 사용하여 보장하는 기밀성을 통해 공격자가 희생자 객체 키를 포함하는 키 블록을 찾는 것을 방지할 수 있다. 공격자가 알 수 없는 키에 대하여 공격하는 경우, 프로세서는 불변 검사를 통해 감지할 가능성이 높을 수 있다.
이하, 도 6 내지 도 15를 참조하여 일 실시예에 따른 보안 컴퓨터 장치 및 비교 실시예에 따른 보안 컴퓨터 장치의 성능을 비교한다.
일 실시예에 따른 보안 컴퓨터 장치의 성능은 Intel Xeon E-2288G 및 64GB DRAM이 탑재된 시스템에서 평가될 수 있다. CPU는 32KB 명령어 및 데이터 캐시들, 256KB의 L2 캐시들 및 16MB의 공유 L3 캐시를 가질 수 있다. CPU는 또한 기밀 컴퓨팅을 위한 Intel SGX 및 AES 블록 암호의 속도를 높이기 위한 AES-NI를 구현할 수 있다. 시스템은 Linux 커널 4.15와 함께 Ubuntu 18.04를 실행할 수 있다. 모든 암호화 작업에 OpenSSL 1.1.1i이 사용될 수 있다. 특히, 데이터의 기밀성을 보호하기 위한 블록 암호 방식으로 AES GCM 256이 선택될 수 있고, 로그 및 MemTable의 MAC을 산출하기 위해 GHASH이, SSTable의 MAC을 산출하기 위해 SHA3-384를 이용하는 HMAC가 선택될 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)와 비교될 때, 암호화 체계로 인한 성능 영향을 배제하기 위해 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 암호화 체계를 따를 수 있다. 참고로, 암호화 또는 GHASH와 달리, HMAC 산출은 CPU에 SHA 계산을 가속화할 하드웨어 확장이 없기 때문에 하드웨어 가속의 이점을 획득하지 못할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 재현된 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 모두 RocksDB 버전 6.14를 기반으로 구축될 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 3가지 워크로드들(r100, r90w10, r80w20)을 가지는 db_bench를 벤치마크로서 이용하여 평가될 수 있다. 3가지 워크로드들은, 각각 100% 읽기를 가지는 워크로드(r100), 90% 읽기 및 10% 쓰기를 가지는 워크로드(r90w10), 80% 읽기 및 20% 쓰기를 가지는 워크로드(r80w20)를 포함할 수 있다. 객체 키의 크기는 16B이고, SSTable의 크기는 64MB이며, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에서와 같이 500만 개의 키 밸류 쌍들이 이용될 수 있다. 블록 크기는 RocksDB의 기본 값인 4KB이거나, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 평가에 사용한 32KB일 수 있다. 일부 실험들에서는, db_bench는 16GB 및 64GB만큼 큰 KVS를 생성하고 생성된 KVS들은 실제 셋업에서 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 성능을 평가하기 위하여 이용될 수 있다.
도 6은 일 실시예 및 비교 실시예들에 따른 수정되지 않은 RockDB를 기준으로 하는 정규화된 감속(slowdown)을 나타낼 수 있다.
비교 실시예 1에 따른 보안 컴퓨터 장치(Speicher)는 오픈 소스가 아니므로, 일 실시예에 따른 보안 컴퓨터 장치(TWEEXER)와의 비교를 위하여 RocksDB를 확장하여 재현될 수 있다. 도1에서 전술한 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 EPC 공간을 절약하기 위해 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 설계 결정 중 일부를 채택하고 비동기 시스템 호출을 위해 엔클레이브(예: Scone)에 의존할 수 있다. 따라서 재현된 비교 실시예 2에 따른 보안 컴퓨터 장치(reproduced Speicher)는 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)와 공유할 수 있다.
도 6에서 나타난 바와 같이, 일 실시예(TWEEZER), 비교 실시예 1(reported Speicher), 및 비교 실시예 2(reproduced Speicher)의 정규화된 처리량을 막대로 표시하고 절대 처리량을 선으로 표시할 수 있다. 이후에 모든 정규화된 결과는 절대 처리량으로 표시되는 기준 RocksDB로 정규화될 수 있다. 실험 결과는 보고된 숫자와 비교하여 유사하거나 더 나은 성능 특성을 나타낸다는 점에서, 비교 실시예 2에 따른 보안 컴퓨터 장치는, 비교 실시예 1에 따른 보안 컴퓨터 장치의 복제로서 합리적인 것으로 주장될 수 있다. 이 실험에서는, 500만 엔트리들로 채워진 KVS에서 시작하여 500만개의 트랜잭션들을 발행하고 밸류 크기를 1024B로 설정하고 블록 크기를 32KB로 설정하여 실험을 원래 설정에 가깝게 복제할 수 있다. 실험 설정의 차이가 원본(예: 비교 실시예 1에 따른 보안 컴퓨터 장치)과 비교하여 복제된 Speicher(예: 비교 실시예 2에 따른 보안 컴퓨터 장치)가 나타내는 더 나은 성능에 기여했을 수 있다. 비교 실시예 1에 따른 보안 컴퓨터 장치(Speicher)는 Xeon E3-1270 v5를 포함하는 시스템에서 평가될 수 있다. 이 시스템은 주 메모리 크기는 동일하지만 공유 L3 캐시가 더 작고(예: 8MB의 공유 L3 캐시) EPC가 더 작다(예: 128MB의 EPC). 더 큰 EPC 및 캐시는 잠재적으로 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)가 실행되는 동안 암호화 작업의 수를 줄여 EPC 내에 데이터를 저장하는 오버헤드를 감소시킬 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, KVS가 더 적은 양의 데이터로 실행된다는 사실에도 불구하고 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)보다 1.91 내지 3.94배 더 우수한 성능을 가질 수 있다. 500만개의 엔트리들은 실제로 EPC 페이징이 발생하지 않을 만큼 충분히 작아서 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)에게 상당히 유리할 수 있다.
도 7은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 세가지 워크로드들에 따라 나타낸다.
도 7에서, 다양한 초기 KVS 크기들 및 1024B의 밸류들을 이용하여 db_bench의 세 가지 워크로드들에 대한 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 정규화된 처리량이 나타날 수 있다. 블록 크기는 4KB로 설정되고, 4KB의 블록 크기는 기존 RocksDB에 대한 기본값이자 최적일 수 있다. db_bench를 이용하여 생성한 KVS 이미지에서 시작하여 처리량을 측정하기 위해 500만 트랜잭션들이 발행될 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 대형 KVS를 사용한 테스트에서 지속적으로 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 1.94 내지 6.23배 우수한 성능을 보여 16 내지 30배에서 4 내지 9배까지 감속을 감소시킬 수 있다. 이 성능 격차는 주로 EPC 페이징으로 인한 것일 수 있다. KVS 크기가 증가함에 따라, EPC에서 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 푸터 캐시는 더 커질 수 있고, 빈번한 EPC 페이징을 유발할 수 있다. SSTable별 키들의 이용은 EPC 내에 보관해야 하는 데이터의 양을 감소시킬 수 있고, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 빈번한 EPC 페이징을 피하는 것을 가능하게 할 수 있다.
도 8은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 범위 요청의 길이에 따라 나타낸다.
1024B의 밸류 및 32KB의 데이터 블록들을 갖는 db_bench에서 seekrandom 벤치마크를 이용하여 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 범위 요청(또는 범위 쿼리)에 대한 성능은 평가될 수 있다. 도 8에서 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 짧은 길이의 범위 요청에 대해 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 높은 처리량을 나타내지만, 범위 요청의 길이가 증가할수록 이점이 감소할 수 있다. 이 결과는 포인트 조회에만 최적화된 세분화된 인증 때문일 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 키 밸류 쌍을 획득할 때, 단일 요청에 대해 전체 데이터 블록을 해독하고 인증하는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 더 작은 암호화 비용을 가질 수 있다. 그러나 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 다수의 쌍들에 대해 한 번만 블록을 해독하고 인증하기 때문에, 이 전체 블록 해독 및 인증은 범위 요청들을 처리할 때 비용이 적게 들 수 있다. 이와 달리 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 일련의 포인트 조회들과 같은 범위 쿼리를 처리할 수 있으므로 키 밸류 쌍을 별도로 인증할 수 있다.
도 9는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치가 큰 데이터 블록을 가지는 경우 정규화된 감속을 세 가지 워크로드들에 따라 나타낸다.
SSTable의 데이터 블록 크기는 설정될 수 있고, 처리량에 영향을 줄 수 있다. 포인트 조회 성능에 대한 실험에서는, 기본값인 4KB의 블록 크기가 이용되었고 기본 RocksDB에 대해 최상의 성능을 제공하기 때문에, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 실험에서 32KB의 데이터 블록은 이용될 수 있다. 따라서, 데이터 블록 크기가 32KB로 설정된 것을 제외하고는 도 7에서 획득된 것과 동일한 실험이 수행될 수 있다. 도 9에서 나타난 바와 같이, EPC 사용량 감소로 인해 비교 실시예에 따른 보안 컴퓨터 장치 (Speicher)의 성능은 상당히 향상될 수 있다. 그럼에도 불구하고, 비교 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 여전히 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 1.46 내지 2.17배 더 뛰어나다는 것을 알 수 있다.
도 10은 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치의 정규화된 감속을 밸류 크기들에 따라 나타낸다.
도 10에서, 밸류 크기가 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 성능에 미치는 영향은 나타날 수 있다. 이러한 실험들을 위하여, 밸류 크기들을 제외하고, 도 6의 비교 연구의 설정과 동일한 설정은 사용될 수 있다. 전반적으로, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 밸류 크기가 증가함에 따라 부분적으로 감소하는 읽기 증폭을 겪기 때문에, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 1.82 내지 4.70배 더 우수할 수 있고, 결과적으로 속도가 느려질 수 있다.
도 11은 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 스레드 수에 따라 나타낸다.
도 11은 스레드 수가 증가함에 따라 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예들에 따른 보안 컴퓨터 장치(Speicher)의 정규화된 처리량을 나타낼 수 있다. 비교 실시예 1에 따른 보안 컴퓨터 장치(Speicher, musl) 및 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher, mi-malloc)에 대하여, RocksDB와 유사하게 확장될 수 있지만, 스레드 수가 증가함에 따라 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)의 속도 저하가 증가할 수 있고, 이는 스레드 수가 증가함에 따라 확장되지 않는 Scone, musl의 기본 힙 할당자 때문일 수 있다. 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER, musl)에서 musl는 mi-malloc으로 대체됨으로써 일 실시예 2에 따른 보안 컴퓨터 장치(TWEEZER, mi-malloc)에서 확장성을 보여주지만 Scone는 mi-malloc이 사용하는 스레드 로컬 스토리지 모델을 지원하지 않기 때문에 이점이 제한적일 수 있다. 그럼에도 불구하고, 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)는 4개의 스레드들로 실행될 때 비교 실시예들에 따른 보안 컴퓨터 장치(Speicher)보다 1.78배 우수한 성능을 가질 수 있다.
도 12는 일 실시예들 및 비교 실시예들에 따른 보안 컴퓨터 장치의 감속을 블록 캐시 크기에 따라 나타낸다.
세분화된 인증을 통해, 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)는 블록 캐시를 EPC와 구별되는 신뢰할 수 없는 메모리(예: 부분 메모리)에 배치할 수 있다. EPC의 외부에 블록 캐시를 가지는 것은, 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)가 더 큰 블록 캐시가 평균 읽기 대기 시간을 감소시키는 것을 도울 수 있는 대형 KVS들을 서비스하기 시작할 때 유용할 수 있다. 도 12는 도 6의 비교 연구와 동일한 설정을 이용하여 블록 캐시 크기를 8MB(예: 기본값)에서 128MB 및 256MB로 변경할 때 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예들에 따른 보안 컴퓨터 장치(Speicher)의 정규화된 처리량을 나타낼 수 있다. 추가 블록 캐시가 보다 더 많은 EPC 페이징을 유발하기 때문에 비교 실시예들에 따른 보안 컴퓨터 장치(Speicher)의 성능 오버헤드는 블록 캐시 사이즈가 증가함에 따라 증가할 수 있다. 비교 실시예들에 따른 보안 컴퓨터 장치(Speicher)는 블록 캐시 관리를 조정하지 않기 때문에 모든 블록 캐시 콘텐츠를 EPC에 배치하여, EPC 사용량을 늘리고 결과적으로 더 많은 EPC 페이징을 발생시킬 수 있다. 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)는 SSTable의 블록과 동일한 암호화 보호를 사용하여 EPC 외부에 블록 캐시를 배치하기 때문에 EPC 페이징 수가 증가하는 문제를 겪지 않을 수 있다. 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)는 여전히 블록 캐시의 이점을 절대적으로 누리지 못하지만, 수정되지 않은 RocksDB에 비해 블록 캐시가 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)에 가져오는 이점이 상대적으로 작기 때문일 수 있다. 수정되지 않은 RocksDB는 캐시 미스 시 검색된 데이터 블록을 압축 해제하기 때문에 블록 캐시 미스 페널티는 수정되지 않은 RocksDB에서 높을 수 있다. 일 실시예들에 따른 보안 컴퓨터 장치(TWEEZER)는 긴 캐시 적중 대기 시간을 가지고, 검색된 쌍을 추가로 해독하고 인증할 수 있다.
도 13는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 페이징의 누적 개수를 나타낸다.
sgxtop을 사용하여 EPC 페이징 수가 획득될 수 있다. 도 13은 도 6 내지 도 12의 실험에 사용된 두 가지 벤치마크 구성들을 실행하는 동안 관찰된 EPC 페이징의 누적 수를 나타낼 수 있다. 특히, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 또는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher) 모두 복구 단계를 최적화하도록 설계되지 않고 많은 수의 EPC 페이징들을 경험하기 때문에, 복구 후 각 실행에서 관찰된 모든 EPC 페이징들은 누적될 수 있다. 블록 크기가 기본값이고 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)에 대해 더 나은 성능을 나타내는 4KB(그림 10의 하단 2개)로 설정되는 경우, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 푸터 블록들의 캐시된 MAC들로 인해 최대 430배 더 많은 EPC 페이징을 겪을 수 있다. 반대로 블록 크기가 32KB로 설정되는 경우, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 처리량 면에서 여전히 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)를 능가하지만 누적 EPC 페이징 수 면에서 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에 근접할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 추가 EPC 페이징들은 백그라운드 압축(compaction)에서 비롯될 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)와 비교하여, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 누적 EPC 페이징이 갑자기 증가하는 특정 기간은 관찰될 수 있다. 이는 EPC 공간을 사용하여 복호화된 블록을 처리하는 백그라운드 압축에 의한 추가 메모리 소비 때문일 수 있다. 이러한 EPC 페이징 번호는 그림 6의 실행에서 획득될 수 있다. 다시 말해, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 압축으로 인해 EPC 페이징이기는 하지만 여전히 훨씬 더 높은 성능을 가질 수 있다. 이는 압축이 일반적으로 트랜잭션 처리를 차단하지 않기 때문일 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 세분화된 인증(§5.3)은 암호화된 SSTable로 압축을 가능하게 하고 이러한 피크를 감소시킬 수 있지만 향후 작업으로 남길 수 있다.
도 14는 일 실시예 및 비교 실시예에 따른 보안 컴퓨터 장치에 대한 EPC 사용량을 나타낸다.
EPC의 데이터 양은, 또 다른 측정값(measure)으로서, 시간이 지남에 따라 EPC 페이징의 잠재적 밀도를 보여줄 수 있다. 더 많은 EPC를 이용하는 프로그램은 평균적으로 더 많은 EPC 미스들 및 더 긴 EPC 액세스 시간을 경험할 가능성이 높을 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 EPC에 저장하는 데이터의 양을 비교하기 위해 SSTable에 대한 메타데이터를 포함하고 메모리에 상주하는 테이블 캐시의 크기를 측정할 수 있다. 테이블 캐시는 설계상 EPC에서 가장 큰 구성 요소이기 때문에, EPC의 데이터 양에 대한 좋은 추정치는 테이블 캐시의 크기를 포함할 수 있다. 도 14에서, 밸류 크기와 블록 크기를 다양하게 할 때 90% 읽기를 갖는 워크로드에 대한 결과는 나타날 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 테이블 캐시는 RocksDB에 비해 3.71 내지 4.17배 더 큰 반면 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 테이블 캐시는 RocksDB의 1.08 내지 1.35배에 불과할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)에 비해 2.84 내지 3.08배 더 큰 테이블 캐시 이용할 수 있다. SSTable별 키를 사용하는 설계 선택(§5.2 참조)은 EPC의 데이터 양을 줄이는 데 도움이 되어 EPC 페이징 감소에 기여할 수 있다.
도 15는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 비휘발성 메모리 사용량을 나타낸다.
각 키 밸류 쌍에 대한 암호화 및 개별 인증 후 덜 생산적인 압축으로 인해 비휘발성 메모리(예: 스토리지) 사용량은 증가할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 특별히 제작된 암호화 및 압축 체계를 사용하지 않는 한 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 세분화된 인증은 압축 전에 데이터가 암호화되기 때문에 비교 실시예 1에 따른 보안 컴퓨터 장치(RocksDB)의 블록 압축을 덜 효율적이게 만들 수 있다. 도 6 내지 도 12의 평가에 사용된 다양한 구성들에서 KVS를 구성하는, 압축을 가지는, 집계된 SSTable들의 크기를 측정함으로써 대응하는 저장 비용은 평가될 수 있다. 도 15에서 나타난 바와 같이, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 비교 실시예 1에 따른 보안 컴퓨터 장치(RocksDB) 및 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)의 1.77 내지 3.45배의 스토리지 오버헤드를 경험할 수 있다. MAC 크기가 각 키 밸류 쌍에 대해 동일하게 유지되기 때문에, 스토리지 오버헤드는 밸류 크기가 감소함에 따라 증가할 수 있다.
도 16는 일 실시예 및 비교 실시예들에 따른 보안 컴퓨터 장치에 대한 쓰기 증폭을 나타낸다.
비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher) 및 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 스토리지에 쓰는 데이터의 양은 측정될 수 있다. 도 16은 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher) 및 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 스토리지에 쓰는 데이터의 양을 나타낼 수 있다. 쓰기 증폭에 미치는 영향을 비교하기 위하여, 각 KVS가 수용하는 키 밸류 쌍의 개수로 쓰여진 데이터의 양은 정규화될 수 있다. 예상된 바와 같이, 수정되지 않은 비교 실시예 1에 따른 보안 컴퓨터 장치(RocksDB) 또는 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)를 실행할 때 메타데이터의 양이 엔트리들의 개수에 비례하기 때문에, 밸류 크기가 커질수록 쓰기 증폭은 감소할 수 있다. 키 밸류 쌍들의 총 크기가 고정될 때, 밸류 크기가 증가함에 따라 더 적은 엔트리들을 저장하기 때문에 더 적은 메타데이터를 쓸 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 쓰기 증폭도 감소하지만, 다른 두 개보다 훨씬 적을 수 있다. 쓰기 증폭의 감소는 데이터 블록의 데이터의 엔트로피 때문일 수 있다. 비교 실시예 2에 따른 보안 컴퓨터 장치(Speicher)와 달리 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 압축 전에 데이터 블록을 암호화하므로 압축이 덜 효과적일 수 있다. 16GB KVS를 사용한 평가에서, 밸류 크기가 512B에서 1024B로 증가하면 쓰기 증폭도 증가할 수 있다.
도 17는 일 실시예들에 따른 보안 컴퓨터 장치들의 처리량을 나타낸다.
일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터를 무시하도록 설계되지 않을 수 있다. 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터 종속 액세스 패턴들을 통한 부채널(side-channel) 누출(leakage)에 대한 면역성이 입증되지 않았을 수 있다. 예를 들어, 공격자는 다음 정보를 알 수 있다. 공격자는 EPC 외부에 저장된 MemTable의 암호화된 값들의 변경들을 관찰함으로써 쓰기 요청이 이루어지고 처리되었음을 알 수 있다. 그러나, 암호화 보호는 공격자가 콘텐츠를 공개하거나 오류를 일으키는 것을 방지할 수 있다. 리프들 간의 관계는 또한, 내부 노드가 EPC 내에 저장된다는 점에서 보호될 수 있다. 엔클레이브에 대한 성공적인 부채널 공격만이 그러한 관계를 드러낼 수 있다. SSTable 내의 액세스 패턴은 쿼리된 키 및 인덱스 키 간의 관계를 드러낼 수 있다. 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 SSTable의 데이터 블록을 섞지 않고, 공격자는 액세스 패턴을 통해 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)가 쿼리된 키를 찾은 데이터 블록을 결정할 수 있다. 이 두 가지를 결합하여, 공격자는 쿼리된 키의 가능한 범위(예: SSTable의 키가 쿼리된 키보다 클 수 있음)를 유추할 수 있다. 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터 블록을 섞음으로써 이 추론을 완화할 수 있다.
일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 KVS 크기가 커질 때 EPC 사용의 효율성을 높이기 위하여 추가로 조정될 수 있다. 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에 비해 EPC에 보유해야 하는 추가 인메모리 데이터의 양이 훨씬 더 적을 수 있다. 그러나 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)가 RocksDB의 확장으로서 EPC 내에서 여전히 캐싱하는 일부 데이터(예: 인덱스 블록)로 인해 KVS 크기가 증가함에 따라 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)가 EPC에 보유하는 데이터의 양은 여전히 증가할 수 있다. RocksDB 메타데이터의 최적화는 EPC 사용량을 더욱 감소시키기 위한 향후 작업으로서 남겨질 수 있다.
일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)는 공격자가 성공적으로 공격을 수행할 가능성은 매우 낮지만 키 블록에 대한 결함 공격을 입증할 수 있게(provably) 방지하지 않을 수 있다. 키 블록에 대한 결함 공격을 입증할 수 있게 방지하지 않는 것은, 키 블록에 대한 MAC 기반 검증이 부족하기 때문일 수 있다. 대안적인 설계 선택으로서, 일 실시예 2에 따른 보안 컴퓨터 장치(TWEEZER)는 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)에 추가적으로, 키 블록에 대한 MAC도 산출하고 검증함으로써 강화될 수 있다. 도17에서, 키 블록의 MAC 산출 및 검증의 설계 선택의 성능 오버헤드를 보여주는 실험 결과는 나타날 수 있다. 예상된 바와 같이, 일 실시예 2에 따른 보안 컴퓨터 장치(TWEEZER+)는 성능 오버헤드를 발생시킬 수 있다. 일 실시예 2에 따른 보안 컴퓨터 장치(TWEEZER+)는 작업 부하 및 값 크기에 따라 일 실시예 1에 따른 보안 컴퓨터 장치(TWEEZER)보다 11% 내지 24% 낮은 속도를 가질 수 있다. 밸류 크기가 감소함에 따라 키 블록 크기가 증가하기 때문에, 오버헤드는 밸류 크기가 작을수록 증가할 수 있다.
이하, 일 실시예에 따른 보안 컴퓨터 장치와 관련된 연구에 대하여 기재한다.
일 실시예에 따른 보안 컴퓨터 장치는 다양한 중요 응용 프로그램을 Intel SGX에 맞춤화하려는 기존 시도 및 KVS를 포함한 데이터베이스 시스템 보안에 대한 연구와 밀접하게 관련될 수 있다.
엔클레이브에서 실행되는 수정되지 않은 애플리케이션을 돕도록 설계된 시스템은 예시적으로, Haven, SCONE, Graphene-SGX, Panoply, SGX-LKL을 포함할 수 있다. Intel SGX용 영구 KVS는 신속하게 조정될 수 있다. 특히, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 SCONE에서 구현 및 테스트되었을 수 있다. 그러나, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 SCONE의 고유한 특징들에 대해 가정하지 않기 때문에, 앞서 언급한 모든 시스템에서 실행될 수 있다.
반복적으로 논의한 바와 같이, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 RocksDB를 예로 들어 SGX에서 영구 KVS의 성능을 향상시키도록 설계되었다는 점에서 일 실시예에 따른 보안 컴퓨터 장치와 가장 유사할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 이 목표를 달성하기 위해 세 가지 새로운 설계 기능을 제공하지만 대규모 KVS로 확장하는 데 실패할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 제안한 많은 아이디어를 채택하는 반면에, 새로운 메시지 인증 방식을 제안하고 확장성 문제를 완화하기 위해 데이터 블록을 재구성할 수 있다. 또한, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 해시 체인 메커니즘을 사용하여 신뢰할 수 있는 카운터를 지원하는 플랫폼에 바인딩되지 않은 솔루션을 허용하는 영구 로그를 보호할 수 있다. Enclage는 SGX 기반 보안 스토리지 엔진으로 설계된 점에서 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)에 가깝지만, 무결성 보호를 고려하지 않을 수 있다.
ShieldStore에서, SGX용 인메모리 KVS를 적용하기 위한 설계 옵션은 연구될 수 있다. TWEEZER와 비교할 때, ShieldStore는 메모리 내 KVS용으로 설계되었을 수 있고, 신선도를 위해 여전히 Merkle 트리에 의존할 수 있다. ShieldStore와 유사하게, EnclaveCache 및 Avocado는 또한 SGX를 사용하여 메모리 내 KVS를 보호하도록 설계될 수 있다.
CryptDB는 수정되지 않은 데이터베이스 쿼리들이 암호화된 백엔드에 의해 프록시되고 처리되는 선구적인 시스템들 중 하나를 나타낼 수 있다. CryptDB는 동형 암호화(homomorphic encryption)를 포함하는 다양한 암호화 체계들을 채택하고 기밀성 보장에 중점을 둘 수 있다. Dory는 기밀성 보장을 넘어 액세스 패턴 기반 누출을 완화하여, 분산 신뢰에 의존하는 진실성(authenticity)을 제공할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 많은 관계형 데이터베이스 시스템들이 RocksDB와 같은 영구 KVS를 스토리지 엔진으로 이용하는 점에서, 이러한 접근 방식에 비해 낮은 레벨에서 동일한 문제를 태클(tackle)할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 데이터를 망각(Obliviousness)하는 것이 불가능할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 모호한 검색 인덱스들 또는 파일 시스템 동작들로 강화될 수 있다.
롤백 공격으로부터 로그를 보호하는 것은 오랫동안 중요한 문제일 수 있다. 잘 알려진 메커니즘 중 하나는 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)가 WAL 및 MANIFEST 로그를 보호하기 위해 채택한 해시 체인을 포함할 수 있다. 그러나 해시 체인은 논문 'Bryan Parno, Jacob R. Lorch, John R. Douceur, James Mickens, and Jonathan M. McCune. Memoir: Practical state continuity for protected modules. In Proceedings of the 32nd IEEE Symposium on Security and Privacy (Oakland), Oakland, CA, May 2011.'(Memoir)에서 논의된 것처럼 충돌 및 복구 전반에 걸친 잠재적 롤백 공격에 대한 신선도를 보장할 수 없을 수 있다. Memoir는 이러한 한계를 극복하고 신뢰할 수 있는 로컬 비휘발성 메모리에 의존할 수 있다. 논문 'Nikolaos Karapanos, Alexandros Filios, Raluca AdaPopa, and Srdjan Capkun. Verena: End-to-end integrity protection for web applications. In Proceedings of the 37th IEEE Symposium on Security and Privacy (Oakland), San Jose, CA, May 2016.'(Verena)에 개시된 보안 컴퓨터 장치도 해시 서버를 사용하여 유사한 문제를 해결할 수 있다. 이에 비해 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 접근 방식은 하트비트 트랜잭션을 타임스탬프 버전으로 보내는 사용자에 의존한다는 점에서 Verena와 유사할 수 있다. ROTE(논문 ' Sinisa Matetic, Mansoor Ahmed, Kari Kostiainen, Aritra Dhar, David Sommer, Arthur Gervais, Ari Juels, and Srdjan Capkun. {ROTE}: Rollback protection for trusted execution. In 26th {USENIX} Security Symposium ({USENIX} Security 17), pages 1289-1306, 2017.'에 개시된 보안 컴퓨터 장치)는 다중 엔클레이브를 사용하여 롤백 공격을 물리치기 위해 신뢰할 수 있는 구성 요소를 요구하는 것을 해결하기 위해 단독으로 설계될 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 이것을 채택하여 하트비트 패킷에 의존하지 않고 롤백 복원력을 제공할 수 있다.
본 명세서에서, LSM 트리 설계 원칙을 활용함으로써 기밀 컴퓨팅에 맞춤화된 LSM 트리 기반 영구 텐트 키 밸류 스토리지를 포함하는 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 제시될 수 있다. 저장 장치에 최적화된 데이터 구조인 LSM 트리가 도입하는 고유한 불변성을 통하여, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 키 밸류 쌍의 무결성 및 신선도를 보호하기 위해 대규모 Merkle 트리를 구성하지 않을 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER) 및 비교 실시예에 따른 보안 컴퓨터 장치(재현된 Speicher)에 대한 실험을 통해 나타난 바와 같이, LSM 트리에 대한 이 새로운 MAC 체계는 상당한 성능 이점을 가질 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)의 구현은 모든 평가 설정, 특히 큰 KVS(예: 16GB 내지 64GB의 KVS)가 있는 설정에서 포인트 조회에서 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 우수한 성능(예: 1.91내지 6.23 배의 성능)을 가질 수 있다.
비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 영구 KVS에 포함된 데이터 구조들을 효율적으로 보호하기 위한 설계를 제시할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에서, Merkle 트리는 암호화 및 MAC를 통한 보호를 위하여 이용될 수 있다. 그러나, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 일 실시예에 따른 보안 컴퓨터 장치에 비하여, Merkle 트리로 인하여 LSM 트리에서 데이터 검색을 위한 보다 더 긴 대기 시간을 가질 수 있고 후술할 바와 같이 다른 캐시들에 의한 EPC 페이지의 사용을 증가시키기 때문에 KVS 속도를 32.5배까지 감소시킬 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)와 같은 목표를 공유할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 널리 사용되는 LSM 트리 기반 영구 KVS인 RocksDB의 확장으로서, LSM 트리가 SGX 엔클레이브에서 효율적으로 실행되도록 맞춤화된 MAC 체계를 이용할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 다음의 3가지의 설계 결정들에 관하여, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)와 다를 수 있다.
첫째, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 정렬된 문자열 테이블(sorted string tables; SSTable)에 걸친 Merkle 트리를 구성하지 않고 LSM 트리의 최신성(freshness)를 보장할 수 있다. LSM 트리의 LSM 트리 기반 KVS는 많은 SSTable들을 포함하고, 각 SSTable은 많은 키-값(key-value) 쌍들을 포함하며, 각 SSTable은 일단 빌드되면 압축(compact)될 때까지 변경할 수 없는(immutable) 상태로 유지될 수 있다. 프로세서는, SSTable에 매핑된 인증 키(본 명세서에서, SSTable의 고유 키(unique key)로도 표현됨)를 이용하여 인증을 수행하고 다른 SSTable에 대하여 상기 인증 키를 재사용하지 않을 수 있다. 일 실시예에 따른 보안 컴퓨터 장치에서, 공격자(attacker)는 리플레이 공격(replay attack)을 수행하기 위해 대상 SSTable 외(예: 다른 SSTable)에서 대상 SSTable의 데이터의 다른 조각을 찾을 수 없을 수 있다.
둘째, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터 블록의 객체 키의 고유성(uniqueness) 및 키 블록의 불변 순서(invariant ordering)를 통해, SSTable 내에서 발생된 리플레이를 감지하는 능력(capability)을 가지고 키 밸류 쌍을 개별적으로 암호화하고 인증할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 데이터 블록들 내의 불변 순서 및 데이터 블록들 간의 불변 순서를 통해, 각 SSTable에 대해 생성된 Merkle 트리를 이용하지 않고 최신성에 대한 공격을 감지할 수 있다.
셋째, 전통적인 해시 체인(hash chain)은 WAL 및 MANIFEST 로그의 두 가지 로그들을 인증하는 데 적합할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 해시 체인을 통해, 필요에 따라 새로운 로그 엔트리들을 생성할 뿐만 아니라, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 의존하는 신뢰할 수 있는(trusted) 카운터들(counters) 없이 로그들을 인증할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 Scone을 이용하고 RocksDB 6.14를 확장함으로써 구현될 수 있다. Scone은 SGX 엔클레이브에서 수정되지 않은 어플리케이션들을 실행하도록 설계된 라이브러리 운영 체제를 포함할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치는, LSM 트리에 맞춤화된 메시지 인증 체계 외의 구성 요소들(예: MemTable)에 관하여 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)의 설계 선택을 채택할 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 오픈 소스 버전이 없기 때문에 비교 연구를 위해 재현(reproduce)될 수 있다. 도 6에서 후술하겠으나, 재현된 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)는 유사한 성능 특성들을 제공할 수 있다.
일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 예상된 성능 향상 및 EPC 효율성을 달성할 수 있다. 일 실시예에 따른 보안 컴퓨터 장치의 성능 향상 및 EPC 효율성은 RocksDB에 이용된 표준 벤치마크 db_bench를 이용하여 나타날 수 있다. 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는 광범위한 데이터로 테스트되는 경우, 작업량(workload) 및 데이터 크기에 따라, 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)보다 1.94 내지 6.23배 뛰어난 성능을 가질 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)가 평가된 것과 동일한 벤치마크 구성(configuration)의 평가에서, 일 실시예에 따른 보안 컴퓨터 장치(TWEEZER)는, 재현된 비교 실시예에 따른 보안 컴퓨터 장치(Speicher)에 비해 1.91 내지 3.94배의 뛰어난 성능을 가질 수 있다. 비교 실시예에 따른 보안 컴퓨터 장치에 비해 일 실시예에 따른 보안 컴퓨터 장치의 성능 향상은 주로 5.24 내지 7.57배 감소된 EPC 페이징 빈도(frequency)에 인한 것일 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (17)
- 프로세서에 의하여 수행되는 방법에 있어서,
사용자로부터 객체 키(object key)를 포함하는 조회 요청(lookup request)을 수신하는 단계;
상기 객체 키를, 메모리의 엔클레이브 페이지 캐시(enclave page cache; EPC)에 저장된 테이블에서, 검색하는 단계;
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC와 구별되는 상기 메모리의 부분 메모리로부터 상기 객체 키에 대응하는 밸류를 획득하는 단계;
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 메모리와 구별되는 스토리지(storage)에 저장된 로그 구조 병합 트리(log structured merge tree)의 테이블에서 상기 객체 키를 검색하는 단계;
상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드(message authentication code)를 획득하는 단계; 및
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성(integrity)을 검증(verify)하는 단계
를 포함하고
상기 EPC는,
상기 EPC에 저장된 테이블에 매핑된 인증 키 및 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들을 저장하고,
상기 밸류의 무결성을 검증하는 단계는,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC로부터, 상기 객체 키에 대응하는 기준 메시지 인증 코드 및 상기 EPC에 저장된 테이블에 대응하는 대상 인증 키를 획득하는 단계; 및
상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 EPC로부터, 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들 중에서 상기 대상 테이블에 매핑된 대상 인증 키를 획득하는 단계를 포함하는,
방법.
- 제1항에 있어서,
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는 단계는,
상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 EPC로부터 획득된 상기 대상 인증 키 및 상기 스토리지로부터 획득된 상기 밸류에 기초하여, 상기 밸류에 대한 비교 메시지 인증 코드를 산출하는 단계; 및
상기 산출된 비교 메시지 인증 코드를 상기 획득된 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는 단계를 더 포함하는,
방법.
- 제1항에 있어서,
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는,
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 최소 레벨에서부터 상기 객체 키의 검색을 시작하는 단계;
상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색되지 않은 경우, 상기 검색 중인 레벨의 다음 레벨에서 상기 객체 키를 재검색하는 단계; 및
상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색된 경우, 상기 객체 키의 검색을 종료하는 단계를 포함하는,
방법.
- 제1항에 있어서,
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는,
상기 로그 구조 병합 트리의 대상 테이블의 복수의 데이터 블록들 중에서, 상기 복수의 데이터 블록들에 포함된 객체 키의 범위를 지시하는, 상기 대상 테이블의 인덱스 블록에 기초하여, 상기 객체 키를 포함할 가능성을 가지는 대상 데이터 블록을 결정하는 단계;
상기 대상 데이터 블록의 복수의 키 밸류 쌍들의 객체 키들을 가지는 키 블록의 순서를 검증하는 단계; 및
상기 대상 데이터 블록의 상기 키 블록의 순서가 검증된 경우, 상기 키 블록에서 상기 객체 키를 검색하는 단계를 포함하는,
방법.
- 제4항에 있어서,
상기 스토리지에 저장된 상기 로그 구조 병합 트리의 테이블에서 상기 객체 키를 검색하는 단계는,
상기 대상 데이터 블록의 상기 키 블록에서 상기 객체 키가 검색되지 않은 경우, 상기 대상 테이블의 다음 레벨의 테이블을 대상 테이블로 변경하여 상기 객체 키를 재검색하는 단계를 더 포함하는,
방법.
- 제1항에 있어서,
상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드를 획득하는 단계는,
상기 객체 키가 대상 데이터 블록의 키 블록에서 검색된 경우, 상기 대상 데이터 블록의 밸류 블록으로부터 상기 객체 키에 대응하는 상기 밸류 및 상기 밸류에 대응하는 상기 기준 메시지 인증 코드를 획득하는 단계를 포함하는,
방법.
- 삭제
- 제1항에 있어서,
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는 단계는,
상기 EPC로부터 획득된 상기 EPC에 저장된 테이블에 매핑된 대상 인증 키 및 상기 EPC와 구별되는 상기 부분 메모리로부터 획득된 밸류에 기초하여 비교 메시지 인증 코드를 산출하는 단계; 및
상기 산출된 비교 메시지 인증 코드를 상기 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는 단계를 포함하는,
방법.
- 하드웨어와 결합되어 제1항 내지 제6항, 및 제8항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
- 엔클레이브 페이지 캐시(enclave page cache; EPC) 및 상기 EPC와 구별되는 부분 메모리를 포함하는 메모리;
상기 메모리와 구별되는 스토리지;
사용자로부터 객체 키(object key)를 포함하는 조회 요청(lookup request)을 수신하고, 상기 객체 키를 상기 EPC에 저장된 테이블에서 검색하며, 상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 스토리지에 저장된 로그 구조 병합 트리(log structured merge tree)의 테이블에서 상기 객체 키를 검색하고, 상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 스토리지로부터 상기 객체 키에 대응하는 밸류 및 기준 메시지 인증 코드(message authentication code)를 획득하며, 상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성(integrity)을 검증(verify)하는 프로세서
를 포함하고,
상기 EPC는,
상기 EPC에 저장된 테이블에 매핑된 인증 키 및 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들을 저장하고,
상기 프로세서는,
상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 EPC로부터 상기 로그 구조 병합 트리의 테이블들에 매핑된 인증 키들 중에서 상기 대상 테이블에 매핑된 대상 인증 키를 획득하고,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC로부터, 상기 객체 키에 대응하는 기준 메시지 인증 코드 및 상기 EPC에 저장된 테이블에 대응하는 대상 인증 키를 획득하고,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC와 구별되는 상기 메모리의 부분 메모리로부터 상기 객체 키에 대응하는 밸류를 획득하고,
상기 기준 메시지 인증 코드에 기초하여 상기 밸류의 무결성을 검증하는,
장치.
- 제10항에 있어서,
상기 프로세서는,
상기 객체 키가 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 대상 테이블에서 검색된 경우, 상기 EPC로부터 획득된 상기 대상 인증 키 및 상기 스토리지로부터 획득된 상기 밸류에 기초하여, 상기 밸류에 대한 비교 메시지 인증 코드를 산출하며,
상기 산출된 비교 메시지 인증 코드를 상기 획득된 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는,
장치.
- 제10항에 있어서,
상기 프로세서는,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 스토리지에 저장된 상기 로그 구조 병합 트리의 최소 레벨에서부터 상기 객체 키의 검색을 시작하고,
상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색되지 않은 경우, 상기 검색 중인 레벨의 다음 레벨에서 상기 객체 키를 재검색하며,
상기 객체 키를 검색 중인 레벨에서 상기 객체 키가 검색된 경우, 상기 객체 키의 검색을 종료하는,
장치.
- 제10항에 있어서,
상기 프로세서는,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색되지 않는 경우, 상기 로그 구조 병합 트리의 대상 테이블의 복수의 데이터 블록들 중에서, 상기 복수의 데이터 블록들에 포함된 객체 키의 범위를 지시하는, 상기 대상 테이블의 인덱스 블록에 기초하여, 상기 객체 키를 포함할 가능성을 가지는 대상 데이터 블록을 결정하고,
상기 대상 데이터 블록의 복수의 키 밸류 쌍들의 객체 키들을 가지는 키 블록의 순서를 검증하며,
상기 대상 데이터 블록의 상기 키 블록의 순서가 검증된 경우, 상기 키 블록에서 상기 객체 키를 검색하는,
장치.
- 제13항에 있어서,
상기 프로세서는,
상기 대상 데이터 블록의 상기 키 블록에서 상기 객체 키가 검색되지 않은 경우, 상기 대상 테이블의 다음 레벨의 테이블을 대상 테이블로 변경하여 상기 객체 키를 재검색하는,
장치.
- 제10항에 있어서,
상기 프로세서는,
상기 객체 키가 대상 데이터 블록의 키 블록에서 검색된 경우, 상기 대상 데이터 블록의 밸류 블록으로부터 상기 객체 키에 대응하는 상기 밸류 및 상기 밸류에 대응하는 상기 기준 메시지 인증 코드를 획득하는,
장치.
- 삭제
- 제10항에 있어서,
상기 프로세서는,
상기 객체 키가 상기 EPC에 저장된 테이블에서 검색된 경우, 상기 EPC로부터 획득된 상기 EPC에 저장된 테이블에 매핑된 대상 인증 키 및 상기 EPC와 구별되는 상기 부분 메모리로부터 획득된 밸류에 기초하여 비교 메시지 인증 코드를 산출하고,
상기 산출된 비교 메시지 인증 코드를 상기 기준 메시지 인증 코드와 비교함으로써, 상기 밸류의 무결성을 검증하는,
장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220021722A KR102668409B1 (ko) | 2022-02-18 | 2022-02-18 | 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 |
PCT/KR2023/002276 WO2023158239A1 (ko) | 2022-02-18 | 2023-02-16 | 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220021722A KR102668409B1 (ko) | 2022-02-18 | 2022-02-18 | 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230124412A KR20230124412A (ko) | 2023-08-25 |
KR102668409B1 true KR102668409B1 (ko) | 2024-05-23 |
Family
ID=87578583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220021722A KR102668409B1 (ko) | 2022-02-18 | 2022-02-18 | 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102668409B1 (ko) |
WO (1) | WO2023158239A1 (ko) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094372A (zh) * | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
CN113536364A (zh) * | 2021-06-04 | 2021-10-22 | 清华大学 | 基于IntelSGX的安全键值存储系统的构建方法 |
-
2022
- 2022-02-18 KR KR1020220021722A patent/KR102668409B1/ko active IP Right Grant
-
2023
- 2023-02-16 WO PCT/KR2023/002276 patent/WO2023158239A1/ko unknown
Non-Patent Citations (2)
Title |
---|
Fan Yang et al., "Aria: Tolerating Skewed Workloads in Secure In-memory Key-value Stores"(2021.04.)* |
Kai Li et al., "Authenticated Key-Value Stores with Hardware Enclaves"(2021.12.)* |
Also Published As
Publication number | Publication date |
---|---|
KR20230124412A (ko) | 2023-08-25 |
WO2023158239A1 (ko) | 2023-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11139959B2 (en) | Stream ciphers for digital storage encryption | |
Bailleu et al. | {SPEICHER}: Securing {LSM-based}{Key-Value} Stores using Shielded Execution | |
US11849045B2 (en) | Controlling verification of key-value stores | |
US10558377B2 (en) | Deduplication-based data security | |
Stefanov et al. | Multi-cloud oblivious storage | |
Ren et al. | Design space exploration and optimization of path oblivious ram in secure processors | |
US20120266000A1 (en) | Trusted storage systems and methods | |
WO2023216783A1 (zh) | 日志结构的安全数据存储方法及装置 | |
Sinha et al. | Veritasdb: High throughput key-value store with integrity | |
Shah et al. | Lamassu:{Storage-Efficient}{Host-Side} Encryption | |
Vig et al. | Framework for fast memory authentication using dynamically skewed integrity tree | |
Xu et al. | Searching Encrypted Data with {Size-Locked} Indexes | |
Kim et al. | A {Log-Structured} Merge Tree-aware Message Authentication Scheme for Persistent {Key-Value} Stores | |
KR20230036129A (ko) | 캐싱된 부분 해시 값들을 사용하는 메모리 보호 | |
KR102668409B1 (ko) | 로그 구조 병합 트리를 이용하는 키 밸류 스토어를 위한 보안 컴퓨터 장치 및 방법 | |
Chakraborti et al. | Dm-x: protecting volume-level integrity for cloud volumes and local block devices | |
Onarlioglu et al. | Eraser: Your data won't be back | |
Vig et al. | DISSECT: dynamic skew-and-split tree for memory authentication | |
Mullen | CapsuleDB: A Secure Key-Value Store for the Global Data Plane | |
Hou et al. | Secure remote storage through authenticated encryption | |
Zubair et al. | Filesystem encryption or direct-access for NVM filesystems? let’s have both! | |
Bakiras et al. | Adjusting the trade-off between privacy guarantees and computational cost in secure hardware PIR | |
Shen et al. | Pldb: Protecting LSM-based Key-Value Store using Trusted Execution Environment | |
Rodrigues | Deduplication vs Privacy Tradeoffs in Cloud Storage | |
Geng | Enhancing Relation Database Security With Shuffling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |