Cryptography Client-Server Assignment

New

Skills

Cybersecurity Management Data Encryption Data Security Python Programming
Job Description

See attached code files there is a newly added support for public-key cryptography to the client. Each client has a randomly generated public key (Client.public_key) and a PublicKeySignature object that can be used to generate signatures. Clients can use verify_sign() to check these signatures. There are also new several functions to support adding and revoking multiple devices using per-device keys: • invite_device(device_public_key) allows inviting a new device to join a user's account. • accept_invite(inviter_public_key) is called by an invited device with the public key of the device that invited them • revoke_device(device_public_key) is called when one device on a user's account would like to revoke the access of some other device (specified by public key) on the user's account. There are also new methods to support adding "friends" and viewing their photos: • add_friend(friend_username, friend_public_key) is called when one user would like to add another user as a friend. A starter implementation of this function is provided to you. For simplicity, you are not required to synchronize the friend list between the different devices belonging to the same user---that is, if Alice wants to view Bob's photos on her two devices, she must call add_friend () to add Bob on each of her devices separately. • get_friend_photos(friend_username) returns the current list of photos in the given friend's album. A starter implementation of a helper function _synchronize_friend is provided to you to help get started---feel free to use it or even delete it. Note that all of these functions involve manually entering a device's public key. In a real system, this might be done through, for example, QR codes. Systems like Keybase and Signal use a strategy like this. There is also a generic Client.push_log_entry method that allows client to push a log entry of arbitrary bytes to the server. This allows you to add new log entries if you wish. The LogEntry class has also been moved into its own file, client/log_entry-py which you are allowed to edit.

Job Type: Remote

Salary: Not Disclosed

Experience: Expert

Duration: 6 Months

Share this job:

Similar Jobs

Cryptographic Client Server System

Posted 4 days ago

Implement public-key cryptography for client security.

Facilitate device addition and revocation for user accounts.

Cryptography Cybersecurity Management Data Encryption Python Programming
overtime