Cryptographic Client Server System

New

Skills

Cryptography Cybersecurity Management Data Encryption Python Programming Security protocols
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

Binance Risk Analyst Program

Posted 17 days ago

Develop risk analysis skills, Monitor account activity, Contact account holders for verification,

hance quantitative skills, Support reporting and

Computer science Cryptography Engineering

Node Operations Product Manager

Posted 58 days ago

Define and validate node scaling strategy | Create data-driven success metrics | Lead strategic

sions impacting reliability | Foster collaboration and coherence | Advocate for Node

Blockchain Crypto Cryptography Decentralized Systems
overtime