SSARES App
SSARES: Secure Searchable Automated Remote Email Storage
The first step to solving the email "at rest" problem by constructing a transparent and automated system with usability in mind.
SSARES abstract
The increasing centralization of networked services places user data at considerable risk. For example, many users store email on remote servers rather than on their local disk. Doing so allows users to gain the benefit of regular backups and remote access, but it also places a great deal of unwarranted trust in the server. Since most email is stored in plaintext, a compromise of the server implies the loss of confidentiality and integrity of the email stored therein. Although users could employ an end–to–end encryption scheme (e.g., PGP), such measures are not widely adopted, require action on the sender side, only provide partial protection (the email headers remain in the clear), and prevent the users from performing some common operations, such as server–side search.
To address this problem, we present Secure Searchable Automated Remote Email Storage (SSARES), a novel system that offers a practical approach to both securing remotely stored email and allowing privacy–preserving search of that email collection. Our solution encrypts email (the headers, body, and attachments) as it arrives on the server using public–key encryption. SSARES uses a combination of Identity Based Encryption and Bloom Filters to create a searchable index. This index reveals little information about search keywords and queries, even against adversaries that compromise the server. SSARES remains largely transparent to both the sender and recipient.
SSARES_app
The SSARES codebase used to create SSARES.
Download
Most recent release
NEW in version 0.2.4.5
A Python C-API implementation of the peks and bfilter, along with some scripts for parsing and searching email. There is also parallel search capabilities.
Prior versions
Version 0.1.1 was used to create SSARES. Major update difference is the usage of PBC version 0.4.12. The PBC package is included in the SSARES_app, however if you would like to download it individually go to the pbc homepage.
Disclaimer
All work is release under GPL v3, with no guarantees. This code was used for research purposes, and it is not fully optimized nor intended for production systems.
The python scripts mentioned in the SSARES paper are not included in the SSARES_app package. The SSARES_app package contains the stand alone peks and bfilter applications. If you would like to do follow up work or work related to SSARES, you may contact me for the scripts.
Current Benchmarks
This is the output from the {{{test/peks_search_test}}} program. It produces decent benchmarks for the speed of the peks library. This was run on a pentium 4 machine with ubuntu feisty fawn. This computer is particularly slow.
Begin PEKS Generation ############# Generating the trapdoor Searching the PEKS ############## KEYWORD matched 65 times 546 total words indexed Total index time - 112 seconds Average per word - 0.205128 seconds Search time - 21 seconds Average per word - 0.038462 seconds
Here is the same program running on a AMD athelon 64 with Fedora Core 7, a much more heavy duty machine. It is roughly 4 times faster. Lesson: the better the computer the faster it runs.
Begin PEKS Generation ############# Generating the trapdoor Searching the PEKS ############## KEYWORD matched 65 times 546 total words indexed Total index time - 26 seconds Average per word - 0.047619 seconds Search time - 5 seconds Average per word - 0.009158 seconds
This is the benchmark for the bfilter library with the error prone filter. This was generated by running, Bloomfilter-0.1/bloom_filter_test.
NO ERROR BUILDING Filer size in bits = 1600 Number of ones = 275 Number of input words = 62 Number of false positives = 10 Number of test words = 34370 Aprox False Positive Rate = 0.000291 Expected False Positive Rate = 0.000170 WITH ERROR BUILDING Filer size in bits = 1600 Number of ones = 1227 Number of input words = 62 Number of added words = 392 Number of false positives = 9330 Number of test words = 34370 Aprox False Positive Rate = 0.271458 Expected False Positive Rate = 0.250397
Python Implementation Benchmarks
Run on a Fedora 8 machine with a Quad Core processor
peks search benchmark with python
Begin PEKS Generation ############# Generating the trapdoor Searching the PEKS ############## KEYWORD matched 65 times 546 total words indexed Total index time - 19 seconds Average per word - 0.034799 seconds Search time - 4 seconds Average per word - 0.007326 seconds
bloom filter benchmark with python
NO ERROR BUILDING Input Words 62 Tested Words 34370 Matches 6 Rate 0.000175 WITH ERROR BUILDING Input Words 62 Added words 392 Tested Words 34370 Matches 8070 Rate 0.234797788769