0% found this document useful (0 votes)
16 views2 pages

Security Course - Projects

This document outlines two cybersecurity projects for students. Project 1 involves creating a command-line password manager that uses hashing and salting to securely store credentials. Students will research password security techniques, implement user registration and login, and allow updating stored passwords. Project 2 involves developing a secure chat application using end-to-end encryption. Students will research symmetric and asymmetric encryption algorithms and securely exchange keys to encrypt messages sent between users. Both projects require documentation and testing of the applications' security.

Uploaded by

marita.hjeij
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views2 pages

Security Course - Projects

This document outlines two cybersecurity projects for students. Project 1 involves creating a command-line password manager that uses hashing and salting to securely store credentials. Students will research password security techniques, implement user registration and login, and allow updating stored passwords. Project 2 involves developing a secure chat application using end-to-end encryption. Students will research symmetric and asymmetric encryption algorithms and securely exchange keys to encrypt messages sent between users. Both projects require documentation and testing of the applications' security.

Uploaded by

marita.hjeij
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Project 1: Secure Password Storage using a command-line application (Last name that starts

with letter A to E)

Objective: The goal of this project is to create a simple command-line password storage system
that uses secure hashing and salting techniques to protect user passwords from brute-force and
dictionary attacks.

Overview: Students will develop a command-line application that allows users to create
accounts, securely store passwords, and authenticate using their stored credentials. The
application should implement a secure password hashing algorithm and use salt to add an
additional layer of security.

Detailed steps:
 Research password hashing algorithms and salt: Students should begin by researching
secure password hashing algorithms like bcrypt, scrypt, or Argon2. They should
understand the importance of using a slow, memory-hard algorithm to protect against
brute-force and dictionary attacks. Additionally, they should learn about using a unique
salt for each password to prevent rainbow table attacks.
 User registration and password storage: The command-line application should provide
a registration process where users can create an account with a unique username and
password. The password should be hashed using the chosen algorithm and combined
with a randomly generated salt. The salt and hashed password should then be securely
stored, associated with the user's account.
 User authentication: Implement a login process where users can input their username
and password through the command line. When a user attempts to log in, the
application should retrieve the stored salt and hashed password for that user. It should
then hash the input password with the retrieved salt and compare it to the stored
hashed password. If the hashed passwords match, the user is granted access.
 Password update functionality: Allow users to change their stored password through
the command line. The application should require the user to provide their old
password for authentication. Once authenticated, the user can input a new password,
which should be hashed and salted following the same process as during registration.
The new hashed password and salt should replace the old ones in storage.
 Documentation and testing: Students should document their code, explaining the
purpose of each function and how the various components interact. They should also
test their application for potential security flaws and ensure that the password storage
and authentication processes are functioning as intended.

Project 2: Implementing a Secure Chat Application (Last name that starts with letter F to Z)

Objective: The goal of this project is to create a simple, secure chat application that uses end-
to-end encryption to protect the confidentiality of messages exchanged between users.
Overview: Students will develop a command-line or desktop chat application that enables users
to send and receive encrypted messages. The application should implement private key
encryption for message encryption and public key encryption for secure key exchange.
Optionally (for extra points), the project can also involve implementing secure user
authentication and secure file transfer.

Detailed steps:
 Research encryption algorithms and key exchange: Students should begin by
researching symmetric encryption algorithms (e.g., AES) for encrypting and decrypting
messages, and asymmetric encryption algorithms (e.g., RSA) for secure key exchange.
They should understand the differences between these two types of encryption and
how they can be combined for secure communication.
 User registration and authentication (optional for extra points): If user authentication
is desired, the application should provide a registration process where users can create
a unique username and password. Implement a secure authentication mechanism to
verify user credentials during the login process.
 Key generation and exchange: Upon successful login or registration, the application
should generate a key pair for each user (public and private keys) using the chosen
asymmetric encryption algorithm. When two users initiate a chat, they should securely
exchange their public keys, which will be used for encrypting and decrypting the
symmetric keys.
 Message encryption and decryption: Before sending a message, the application should
generate a unique symmetric key for each message. The message should be encrypted
using this symmetric key and the chosen symmetric encryption algorithm. The
symmetric key should then be encrypted using the recipient's public key. The encrypted
message and encrypted symmetric key should be sent to the recipient, who will decrypt
the symmetric key using their private key and then decrypt the message using the
decrypted symmetric key.
 Message transmission and reception: Implement a mechanism for sending and
receiving messages between users, such as using sockets for real-time communication
or a simple message server that stores and forwards messages.
 Secure file transfer (optional for extra points): If desired, extend the chat application to
support secure file transfer. Files should be encrypted using the same process as
messages, ensuring that only the intended recipient can decrypt and access the sent
files.
 Documentation and testing: Students should document their code, explaining the
purpose of each function and how the various components interact. They should also
test their application for potential security flaws and ensure that the encryption, key
exchange, and messaging processes are functioning as intended.

Note: For both projects, the choice of programming language depends on the students' existing
knowledge and preferences.
Good Luck!

You might also like