An End-to-End Encrypted File Sharing System
In my computer security class, I successfully designed and
implemented a robust secure file-sharing system using the
Golang programming language. The client application,
resembling Dropbox but fortified with cryptographic security
measures, allowed users to perform actions like
authentication, saving, loading, overwriting, appending,
sharing, and revoking access to files.
The system architecture comprised a trusted Keystore and an
untrusted Datastore, acknowledging potential adversaries'
knowledge of the client application and access to its source
code. The Keystore ensured the secure storage of public keys,
while the Datastore faced potential malicious activities. The
threat model considered adversaries, potentially malicious
users, and communication vulnerabilities.
The design requirements emphasized secure username and
password handling, support for multiple user sessions,
management of public keys using various cryptographic
functions, statelessness of the client, and maintaining
confidentiality and integrity of file contents. The project
incorporated cryptographic functions such as Public Key
Encryption (PKE), Digital Signatures (DS), Hash Function,
Hash-Based Message Authentication Code (HMAC), Hash-Based Key
Derivation Function (HKDF), Password-Based Key Derivation
Function, Symmetric Encryption, and Random Byte Generator.
The client efficiently handled file sharing and access
revocation, maintaining a single copy of each file and
preventing unauthorized actions by revoked users.
Additionally, the system adhered to Golang coding standards,
avoiding global variables, returning errors for malicious
actions, and using nil to signify successful operations.
This project demonstrated my proficiency in applying
cryptographic concepts, considering complex threat models, and
implementing a secure file-sharing system with a focus on
cryptographic functions and coding standards.
Languages: Golang
Project Size:
Skills Used:
Please contact me for the source code or a demo