SSARESApp

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

SSARES_app-0.2.4.5.tgz

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