Viability of progressive decryption of large media files using chunk-based storage
Abstract
Denne oppgaven har som mål å finne ut om en dokumentorientert database som bruker en lagringsstrategi basert på filoppdeling vil ha tilfredsstillende leseytelse sammenlignet med tradisjonelle NTFS-filserverbaserte løsninger ved tilgang av krypterte data. Det ble observert fordeler ved bruk av filoppdeling under lesing, blant annet raskere lesehastighet og lavere minnebruk. Vi implementerte tre løsninger for å sammenlikne ytelsen. De to første tok kun i bruk lagring på disk, og den siste tok i bruk en proprietær dokumentorientert database. Den første løsningen krypterer og dekrypterer hele filer fra disk. Den andre tar i bruk filoppdeling som gjør at deler av filen kan dekrypteres uavhengig av andre deler. Den siste løsningen tar i bruk en dokumentorientert database for å lagre delene av filen, i stedet for å lagre rett på disk. Den første, naive løsningen, har god ytelse for små filer, men blir verre når filstørrelsen øker og RAM-en blir brukt opp. De to siste løsningene bruker mindre minne, og gjennomstrømningen er nesten lineær, uavhengig av filstørrelse. De er også raskere for de fleste filstørrelser. Databasetilnærmingen går noe saktere på grunn av ekstra arbeid relatert til å hente ut data fra databasen framfor fra disk. Den kan likevel ha fordeler i forbindelse med databasetransaksjoner og at den har én enkelt sannhetskilde. This thesis aims to find out whether or not a document-oriented database employing a chunk-based storage strategy has satisfactory read performance compared to traditional NTFS file server-based approaches when accessing encrypted data. The identified benefits of using chunk-based storage is that random read access decryption could be sped up significantly, and this would allow for media streaming of encrypted content. We implemented three solutions, two of which were solely on the disk, while the last used a proprietary document-oriented database. The first method decrypts entire files at a time from the disk. The second splits files into chunks such that they can be decrypted regardless of each other. The third is similar to the chunk-based approach but stores the chunks in a document database. The first solution performs well for smaller file sizes but degrades as files eat up the main memory. The latter two solutions use less memory and execute faster for most file sizes. The database approach is somewhat slower due to the overhead associated with data fetching, but benefits such as support for transactions and having a single source of truth make it a competitive and viable option.