From 9192a66a905bd1ccb14e2e438a234d48121ea1f9 Mon Sep 17 00:00:00 2001 From: yzr95924 Date: Sat, 24 Sep 2022 11:38:44 +0800 Subject: [PATCH] add BlockEnc-HotStorage'22 --- README.md | 54 ++++++----- .../Data-Encryption/BlockEnc-HotStorage'22.md | 85 ++++++++++++++++++ paper_figure/image-20220924003433635.png | Bin 0 -> 43490 bytes 3 files changed, 111 insertions(+), 28 deletions(-) create mode 100755 StoragePaperNote/Security/Data-Encryption/BlockEnc-HotStorage'22.md create mode 100755 paper_figure/image-20220924003433635.png diff --git a/README.md b/README.md index 26f9be2..f23c324 100644 --- a/README.md +++ b/README.md @@ -58,11 +58,11 @@ Table of Contents ## Data Deduplication ### Summary -1. *99 Deduplication Problems*----HotStorage'16 ([link](https://pdfs.semanticscholar.org/bd54/6dda50541489ff23fbc1e154dea50d911a43.pdf)) ([summary](https://yzr95924.github.io/paper_summary/99DeduplicationProblem-HotStorage'16.html)) -2. *A Comprehensive Study of the Past, Present, and Future on Data Deduplication*----Proceedings of the IEEE'16 ([link](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7529062)) -3. *A Survey of Secure Data Deduplication Schemes for Cloud Storage Systems*----ACM Computing Surveys'17 ([link](https://dl.acm.org/citation.cfm?id=3017428)) -4. *A Survey of Classification of Storage Deduplication Systems*----ACM Computing Surveys'14 ([link](https://dl.acm.org/citation.cfm?id=2611778)) -5. *Understanding Data Deduplication Ratios*----SNIA'08 ([link](https://www.snia.org/sites/default/files/Understanding_Data_Deduplication_Ratios-20080718.pdf)) +1. *Understanding Data Deduplication Ratios*----SNIA'08 ([link](https://www.snia.org/sites/default/files/Understanding_Data_Deduplication_Ratios-20080718.pdf)) +2. *A Survey of Classification of Storage Deduplication Systems*----ACM Computing Surveys'14 ([link](https://dl.acm.org/citation.cfm?id=2611778)) +3. *A Comprehensive Study of the Past, Present, and Future on Data Deduplication*----Proceedings of the IEEE'16 ([link](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7529062)) +4. *99 Deduplication Problems*----HotStorage'16 ([link](https://pdfs.semanticscholar.org/bd54/6dda50541489ff23fbc1e154dea50d911a43.pdf)) ([summary](https://yzr95924.github.io/paper_summary/99DeduplicationProblem-HotStorage'16.html)) +5. *A Survey of Secure Data Deduplication Schemes for Cloud Storage Systems*----ACM Computing Surveys'17 ([link](https://dl.acm.org/citation.cfm?id=3017428)) 6. *Backup to the Future: How Workload and Hardware Changes Continually Redefine Data Domain File Systems*----IEEE Computer'17 ([link](https://ieeexplore.ieee.org/abstract/document/7971884)) ### Workload Analysis @@ -204,41 +204,39 @@ Table of Contents ### Memory && Block-Layer Deduplication -1. *UKSM: Swift Memory Deduplication via Hierarchical and Adaptive Memory Region Distilling*----FAST'18 ([link](https://www.usenix.org/system/files/conference/fast18/fast18-xia.pdf)) [summary](https://yzr95924.github.io/paper_summary/UKSM-FAST'18.html) -2. *Using Hints to Improve Inline Block-Layer Deduplication*----FAST'16 ([link]()) [summary](https://yzr95924.github.io/paper_summary/HintsDeduplication-FAST'16.html) -3. *XLM: More Effective Memory Deduplication Scanners through Cross-Layer Hints*----USENIX ATC'13 ([link](https://www.usenix.org/system/files/conference/atc13/atc13-miller.pdf)) +1. *CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Drives*----FAST'11 ([link](https://www.usenix.org/legacy/event/fast11/tech/full_papers/Chen.pdf)) [summary](https://yzr95924.github.io/paper_summary/CAFTL-FAST'11.html) +2. *XLM: More Effective Memory Deduplication Scanners through Cross-Layer Hints*----USENIX ATC'13 ([link](https://www.usenix.org/system/files/conference/atc13/atc13-miller.pdf)) +3. *Using Hints to Improve Inline Block-Layer Deduplication*----FAST'16 ([link]()) [summary](https://yzr95924.github.io/paper_summary/HintsDeduplication-FAST'16.html) 4. *OrderMergeDedup: Efficient, Failure-Consistent Deduplication on Flash*----FAST'16 ([link](https://www.usenix.org/system/files/conference/fast16/fast16-papers-chen-zhuan.pdf)) -5. *CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Drives*----FAST'11 ([link](https://www.usenix.org/legacy/event/fast11/tech/full_papers/Chen.pdf)) [summary](https://yzr95924.github.io/paper_summary/CAFTL-FAST'11.html) -5. *Remap-SSD: Safely and Efficiently Exploiting SSD Address Remapping to Eliminate Duplicate Writes*----FAST'21 ([link](https://www.usenix.org/system/files/fast21-zhou.pdf)) +5. *UKSM: Swift Memory Deduplication via Hierarchical and Adaptive Memory Region Distilling*----FAST'18 ([link](https://www.usenix.org/system/files/conference/fast18/fast18-xia.pdf)) [summary](https://yzr95924.github.io/paper_summary/UKSM-FAST'18.html) +6. *Remap-SSD: Safely and Efficiently Exploiting SSD Address Remapping to Eliminate Duplicate Writes*----FAST'21 ([link](https://www.usenix.org/system/files/fast21-zhou.pdf)) 7. *Memory Deduplication for Serverless Computing with Medes*----EuroSys'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3492321.3524272)) 8. *On the Effectiveness of Same-Domain Memory Deduplication*----EuroSec'22 ([link](https://download.vusec.net/papers/dedupestreturns_eurosec22.pdf)) -8. *Dedup-for-Speed: Storing Duplications in Fast Programming Mode for Enhanced Read Performance*----SYSTOR'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3534056.3534937)) +9. *Dedup-for-Speed: Storing Duplications in Fast Programming Mode for Enhanced Read Performance*----SYSTOR'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3534056.3534937)) ### Data Chunking -1. *SS-CDC: A Two-stage Parallel Content-Defined Chunking for Deduplicating Backup Storage*----SYSTOR'19 ([link]( http://ranger.uta.edu/~sjiang/pubs/papers/ni19-ss-cdc.pdf )) [summary](https://yzr95924.github.io/paper_summary/SSCDC-SYSTOR'19.html) -2. *RapidCDC: Leveraging Duplicate Locality to Accelerate Chunking in CDC-based Deduplication Systems*----SoCC'19 ([link](http://ranger.uta.edu/~sjiang/pubs/papers/ni19-rapidcdc.pdf)) [summary](https://yzr95924.github.io/paper_summary/RapidCDC-SoCC'19.html) -3. *Frequency Based Chunking for Data De-Duplication*----MASCOTS'10 [summary](https://yzr95924.github.io/paper_summary/FrequencyBasedChunking-MASCOTS'10.html) -4. *Bimodal Content Defined Chunking for Backup Streams*----FAST'10 -5. *Delta: a Deduplication-inspired Fast Delta Compression Approach*----Performance'14 -6. *P-dedupe: Exploiting Parallelism in Data Deduplication System*----NAS'12 -7. *MUCH: Multi-threaded Content-Based File Chunking*----TC'15 -8. *Multi-Level Comparison of Data Deduplication in a Backup Scenario*----SYSTOR'09 -9. *A Framework for Analyzing the Improving Content-Based Chunking Algorithms*----HP Technique Report'05 -10. *FastCDC: a Fast and Efficient Content-Defined Chunking Approach for Data Deduplication*----USENIX ATC'16 ([link](https://www.usenix.org/system/files/conference/atc16/atc16-paper-xia.pdf)) [summary](https://yzr95924.github.io/paper_summary/FastCDC-ATC'16.html) +1. *A Framework for Analyzing the Improving Content-Based Chunking Algorithms*----HP Technique Report'05 ([link](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.394.569&rep=rep1&type=pdf)) +2. *Multi-Level Comparison of Data Deduplication in a Backup Scenario*----SYSTOR'09 ([link](https://dl.acm.org/doi/abs/10.1145/1534530.1534541)) +3. *Frequency Based Chunking for Data De-Duplication*----MASCOTS'10 ([link](https://d1wqtxts1xzle7.cloudfront.net/32669314/PSFBC-libre.pdf?1391107979=&response-content-disposition=inline%3B+filename%3DPSFBC.pdf&Expires=1663993649&Signature=FTBTHVpEJbisnhRMvnK9OAIAU0rwVDIPrmVgSjOR5sNurF-EZSBabJ9UAqt9STj1ZlTS6pUMXTwvGCeMRbU2XvQP20VaGwlVVfEEgvFbGV~OFPlK7zVLEFkWZTUvVvEV~mNMYaHvdDNMferbqBtKDhv6cM~tXZJwndFN0YVAvX-~AhOyZhqdkBCQl7RKC6A3bp9sVruT8iI4FAyHsXYAVlx8NASeKkgk2-CtrnPncy7s4hUFZbf99APPIQpbvSMQiIp7vq1MasXjZS-0l51veeFYyMuzQJMAuT4nkbI5wPDPQwFLs2ZeM4ywa4DemLMO82fCyUO7AmYAgbbuQBXj~w__&Key-Pair-Id=APKAJLOHF5GGSLRBV4ZA)) [summary](https://yzr95924.github.io/paper_summary/FrequencyBasedChunking-MASCOTS'10.html) +4. *Bimodal Content Defined Chunking for Backup Streams*----FAST'10 ([link](https://www.usenix.org/legacy/event/fast10/tech/full_papers/kruus.pdf)) +5. *MUCH: Multi-threaded Content-Based File Chunking*----TC'15 ([link](https://oslab.kaist.ac.kr/wp-content/uploads/esos_files/publication/conferences/international/MUCH_Multithreaded_Content_Based_File_Chunking.pdf)) +6. *FastCDC: a Fast and Efficient Content-Defined Chunking Approach for Data Deduplication*----USENIX ATC'16 ([link](https://www.usenix.org/system/files/conference/atc16/atc16-paper-xia.pdf)) [summary](https://yzr95924.github.io/paper_summary/FastCDC-ATC'16.html) +7. *SS-CDC: A Two-stage Parallel Content-Defined Chunking for Deduplicating Backup Storage*----SYSTOR'19 ([link]( http://ranger.uta.edu/~sjiang/pubs/papers/ni19-ss-cdc.pdf )) [summary](https://yzr95924.github.io/paper_summary/SSCDC-SYSTOR'19.html) +8. *RapidCDC: Leveraging Duplicate Locality to Accelerate Chunking in CDC-based Deduplication Systems*----SoCC'19 ([link](http://ranger.uta.edu/~sjiang/pubs/papers/ni19-rapidcdc.pdf)) [summary](https://yzr95924.github.io/paper_summary/RapidCDC-SoCC'19.html) ### Cache Deduplication -1. *CDAC: Content-Driven Deduplication-Aware Storage Cache*----MSST'19 ([link](http://storageconference.us/2019/Research/CDAC.pdf)) -2. *PLC-cache: Endurable SSD cache for deduplication-based primary storage*----MSST'14 ([link](https://ieeexplore.ieee.org/abstract/document/6855536)) -3. *Nitro: A Capacity-Optimized SSD Cache for Primary Storage*----USENIX ATC'14 ([link](https://www.usenix.org/system/files/conference/atc14/atc14-paper-li_cheng_nitro.pdf)) +1. *PLC-cache: Endurable SSD cache for deduplication-based primary storage*----MSST'14 ([link](https://ieeexplore.ieee.org/abstract/document/6855536)) +2. *Nitro: A Capacity-Optimized SSD Cache for Primary Storage*----USENIX ATC'14 ([link](https://www.usenix.org/system/files/conference/atc14/atc14-paper-li_cheng_nitro.pdf)) +3. *CDAC: Content-Driven Deduplication-Aware Storage Cache*----MSST'19 ([link](http://storageconference.us/2019/Research/CDAC.pdf)) 4. *Austere Flash Caching with Deduplication and Compression*----USENIX ATC'20 ([link](https://www.usenix.org/system/files/atc20-wang-qiuping.pdf)) ### Garbage Collection 1. *Memory Efficient Sanitization of a Deduplicated Storage System*----FAST'13 ([link](https://www.usenix.org/system/files/conference/fast13/fast13-final100_0.pdf)) [summary](https://yzr95924.github.io/paper_summary/MemorySanitization-FAST'13.html) -2. *Accelerating Restore and Garbage Collection in Deduplication-based Backup System via Exploiting Historical Information*----USENIX ATC'14 ([link](https://pdfs.semanticscholar.org/9b8d/a007a6801c9f96784dc7bc839794cb0db3ad.pdf)) [summary]( https://yzr95924.github.io/paper_summary/AcceleratingRestore-ATC'14.html ) -3. The Logic of Physical Garbage Collection in Deduplicating Storage----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-douglis.pdf)) -4. Concurrent Deletion in a Distributed Content-addressable Storage System with Global Deduplication----FAST'13 ([link](https://www.usenix.org/system/files/conference/fast13/fast13-final91.pdf)) +2. Concurrent Deletion in a Distributed Content-addressable Storage System with Global Deduplication----FAST'13 ([link](https://www.usenix.org/system/files/conference/fast13/fast13-final91.pdf)) +3. *Accelerating Restore and Garbage Collection in Deduplication-based Backup System via Exploiting Historical Information*----USENIX ATC'14 ([link](https://pdfs.semanticscholar.org/9b8d/a007a6801c9f96784dc7bc839794cb0db3ad.pdf)) [summary]( https://yzr95924.github.io/paper_summary/AcceleratingRestore-ATC'14.html ) +4. The Logic of Physical Garbage Collection in Deduplicating Storage----FAST'17 ([link](https://www.usenix.org/system/files/conference/fast17/fast17-douglis.pdf)) ### Network Deduplication @@ -344,7 +342,7 @@ Table of Contents 17. *Pancake: Frequency Smoothing for Encrypted Data Stores*----USENIX Security'20 ([link](https://www.usenix.org/system/files/sec20-grubbs.pdf)) 18. *Hiding the Lengths of Encrypted Message via Gaussian Padding*----CCS'21 ([link](https://dl.acm.org/doi/pdf/10.1145/3460120.3484590)) 19. *On Fingerprinting Attacks and Length-Hiding Encryption*----CT-RSA'22 ([link]()) -20. *Rethinking Block Storage Encryption with Virtual Disks*----HotStorage'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3538643.3539748)) +20. *Rethinking Block Storage Encryption with Virtual Disks*----HotStorage'22 ([link](https://dl.acm.org/doi/pdf/10.1145/3538643.3539748)) [summary](https://yzr95924.github.io/paper_summary/BlockEnc-HotStorage'22.html) ### Secure Deletion diff --git a/StoragePaperNote/Security/Data-Encryption/BlockEnc-HotStorage'22.md b/StoragePaperNote/Security/Data-Encryption/BlockEnc-HotStorage'22.md new file mode 100755 index 0000000..d55a6db --- /dev/null +++ b/StoragePaperNote/Security/Data-Encryption/BlockEnc-HotStorage'22.md @@ -0,0 +1,85 @@ +--- +typora-copy-images-to: ../paper_figure +--- +# Rethinking Block Storage Encryption with Virtual Disks + +| Venue | Category | +| :------------------------: | :------------------: | +| HotStorage'22 | Data Encryption | +[TOC] + +## 1. Summary +### Motivation of this paper + +- disk encryption + - length preserving and **do not require storing any additional information** with an encrypted disk sector + - no room left to store the IV alongside the encrypted sectors + - no room to store a MAC associated with each sector + - force the encryption to be **deterministic** and disallow integrity mechanisms + - lower security guarantees +- motivation + - disk encryption in a virtual disk that supports versioning and snapshots + - amplified the shortcoming in disk encryption + - standard practice forfeits some security for ease of management and performance considerations +- main problem + - explore how best to implement **additional per-sector information** in Ceph RBD + - client-side encryption + +### Per-sector information in disk encryption + +- shortcoming in AES-XTS + - changing a single bit in the sector (without changing the key or IV) --> yield the expected change only to the **sub-block** in the cipher to which this bit belongs + - during an overwrite, an adversary can detect exactly **which of the sub-blocks** has changed and which have remained the same + - leak some information about the relation between the plaintexts at a sector granularity + - why AES-XTS is widely used for disk encryption? due to practicality +- Ceph RBD + - distributes each I/O to its corresponding OSD via RADOS + - support transactions in which writes of several small I/Os are guaranteed to be written **atomically** + - LUKS standard: AES-XTS (client-side encryption) +- design choices + - ![image-20220924003433635](./../paper_figure/image-20220924003433635.png) + - a): each access is contiguous to the data and its matching IV + - b): store all the IVs of the object (4 MiB) after encrypted data + - c): a key-value database (RocksDB) to store the IVs + - key is the offset of the block in the object + - supports accessing multiple values based on a range of integer keys with a single operation + +### Implementation and Evaluation + +- implementation + - modify the built-in client-side encryption in Ceph RBD + - use a fresh random IV per each sector write + - IV is persisted to disk to be used during read operations +- evaluation + - baseline: LUKS2 in Ceph RBD, deterministic LBA based IVs + - vary the size of I/Os + - b) is better + +## 2. Strength (Contributions of the paper) + +- very clear presentation with simple solutions +- point out that working at the virtual mapping layer of the storage system creates opportunities for more efficient implementation + +## 3. Weakness (Limitations of the paper) + +- none + +## 4. Some Insights (Future work) + +- background of disk encryption + - data is encrypted before being written to disk + - if the disk is stolen or illegally accessed, attackers would not be able to make sense of the data + - encryption is done at a sector-by-sector granularity + - 512 bytes or 4096 bytes +- disk encryption today + - a unique data encryption key **per disk** + - use sector number or LBA as the IV + - only security concerns: overwrites to the **same address** + +- virtual disk + - contains a virtual-to-physical mapping layer: can piggyback on to augment the layout and incorporate additional per-sector information +- wide-block encryption + - every bit of the plaintext of sector will influence the **entire** ciphertext of the sector + - low performance and patenting considerations +- block storage systems would benefit by natively supporting per-sector metadata + - for the long term diff --git a/paper_figure/image-20220924003433635.png b/paper_figure/image-20220924003433635.png new file mode 100755 index 0000000000000000000000000000000000000000..8472afaf825e85b7a6606e317add92c531e32990 GIT binary patch literal 43490 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

g-2~UeI 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