Project Ideas:


·       Secure Distributed File Storage:

In this project, you will develop a solution such that it will be able to store a file either locally or in a remote location (may be more than one remote location) encrypted using CTR mode of encryption. Also the authenticity of each stored file should be protected using HMAC algorithm (will be described in the class).  Each file should be encrypted with a different key generated randomly and the key should be stored locally by encrypting with a password provided by the user.  For example, a user would like to store a file named “file1” both in and local directory. A sample execution of the program (suppose, the name of the jave bytecode file is “encfile” ) will look like this.


> java encfile file1  local [email protected]/dir/


Once the user Alice presses enter, the program will ask for the login password for If more than one remote location is entered, program will ask for the login password for each remote location. You can use ftp routines in the java to enable storage to a remote site

It will also ask for the password that will encrypt the key used for the encryption and HMAC. You should make sure that the password that will be used to protect the encryption key should be hard to predict. Also you should use a good random source for key generation.


Once the program is executed, it will encrypt the file using AES in CTR mode, create a MAC using HMAC and based on the user preferences store the file either locally or remotely.  Program should try to take measures against leaving the secret keys in the memory.  Also it will save the file encryption key by encrypting it with the user password. Also encrypted file will have “.enc” suffix. For example, the above execution will create a “file1.enc” locally and “file1.enc” in “cs4.utdallas/dir/”.


Your program should be storing the each location where a given encrypted file could be found and retrieve the file when it is needed. If the local version does not exist or the authenticity of the file cannot be verified, program should automatically retrieve a remote version.


Your program should handle the case where a file is stored remotely only. For example, it can be the case that


> java encfile file1  [email protected]/dir/


By running


> java encfile file1.enc


The program should automatically retrieve the file1 from a remote location.


·      Using Data Mining for Cryptanalysis:

It has been shown that guessing the least significant bit of RSA algorithm significantly better than random is equivalent to breaking RSA.  In this project, given the RSA public key, (n,e), you will try to build Naïve Bayes and Neural Network models that can predict the least significant bit of  x, given only the  and the public key . In other words, you will try to build a machine learning model that can predict the least significant bit of RSA using the public key. You should build two machine learning models using WEKA machine learning package for predicting the least significant bit of RSA encrypted messages.


·      Solving Yao’s Millionaire Problem Using Secure Circuit Evaluation:

In this project, you will implement a two party secure circuit evaluation with semi-honest adversaries for solving Yao’s millionaire problem.  The details of such implementation can be found in the following paper (FairPlay). You are only required to implement the section 4.2 of the FairPlay paper.