Cyber Security and Programing

Job ID: 31695816

Budget: $60 – $70 USD

I want someone who can do a very small project in Asymmetric Encryption/Certificates with Java

You will implement an e-voting system. There will be two components in the system: Vote Server, Voting Machine.

Vote Server Implementation Details:

Vote Server must listen from port 3333 and must accept votes from voting machine from this port.
It will receive usernames as an example input like below from a “.txt” file named “users.txt”:


Ali
Veli
Mehmet
Elif


At the startup, Vote Server will create an RSA key pair for itself using keygen tool[1,2] and store
it in a directory as files.
 Then, for each user, VoteServer will create an RSA key pair and digital certificate in a directory
using keygen tool.
 RSA private key of user will be stored in a file encrypted with username of user.
 Public keys should be stored in digital certificate which is signed by VoteServer’s private key.
 VoteServer also takes election context in an example input, from the file named “election.txt”,
where the first contains election question and the following lines contains the names of
candidates:

Who will be the next hero?
Batman
Superman
Spiderman
Ironman


Voting Machine Implementation Details:
 Firstly, VotingMachine must take the username as a command line argument. Then, it must
connect to Vote Server from port 3333.
 Vote Server will check the username and, if the username is correct, it will send Voting
Machine a challenge encrypted with user’s RSA public key.
 The Voting Machine must ask the password of user’s RSA private key file. If the user enters
the password (which is equal to username) correctly, the Voting Machine decrypts the
challenge and sends the decrypted challenge as a response.
 When the Vote Server receives the correct response, it sends the election question and
candidates to the Voting Machine. Then, the Voting Machine will display the question and
candidates to the user.
 When the user selects a candidate, the VotingMachine will sign the selected candidate’s
name with time information and send it to the Vote Server. VoteServer saves the signed
vote in a file, verifies the signature of the user and updates the final results file, which
contains the number of votes for each candidate.
 All operations must be logged in log files of Vote Server (“VoteServerLog.txt”) and Voting
Machine (“VotingMachineLog.txt”).