Skip to content

"Esse3-Bootleg: A secure JavaEE web app for managing academic information, designed for teachers, students, and administrators with Dockerized deployment."

License

Notifications You must be signed in to change notification settings

lallo-unitn/Esse3-Bootleg-APFCM

Repository files navigation

Esse3-Bootleg Project

Project Description

Esse3-Bootleg is a JavaEE web application developed to assist teachers in assigning grades to their students. The application includes functionalities for students and administrators, offering a secure, user-friendly platform for managing academic information. The project was developed as part of the Advanced Programming of Cryptographic Methods course and aims to provide secure data handling, utilizing both data-at-rest and data-in-transit security mechanisms. The entire system is dockerized for ease of deployment and testing.

Functional Requirements

  • Login: Users can log in with a username and password. Unauthorized users are only able to access the login page.
  • Student Dashboard: Students can view their personal details, the courses they are enrolled in, and their grades.
  • Teacher Dashboard: Teachers can assign grades to students using a secure key-based mechanism.
  • Admin Dashboard: Admins can add new students to the system by inputting user details.

Security Features

  • Transport Layer Security (TLS): All communications between the client, the application server, and the database are protected using TLSv1.3.
  • Data Encryption: Data-at-rest in the database is encrypted using Transparent Data Encryption (TDE) with AES-128 in CTR mode.
  • Password Security: Passwords are hashed and salted using Bcrypt with a work factor of 13.
  • Digital Signatures: Teachers must sign grade assignments using ECDSA to ensure data integrity.

Software Architecture

Esse3-Bootleg follows the MVC (Model-View-Controller) design pattern:

  • Controller Layer: Handles the business logic, implemented via servlets that manage interactions between the model and view layers.
  • Model Layer: Manages data persistence using Java Persistence API (JPA) and interacts with the database through enterprise beans.
  • View Layer: Uses Java Server Pages (JSPs) to render the web interface, providing user interactions.

Technological Stack

  • Java 17.0.9 with JavaEE v.9.1 for backend development.
  • WildFly v.30.0.0.Final as the application server.
  • MariaDB v.11.2.2 for database management.
  • Docker & Docker-Compose for containerized deployment.
  • Apache Maven for building the project and managing dependencies.

Installation and Execution

  1. Prerequisites: Ensure Docker and Docker Compose are installed. Make sure ports 3306, 8080, 8443, and 9990 are available.
  2. Deployment:
  3. Testing Roles:
    • Student: Use credentials (user1, password1) to view the student dashboard.
    • Teacher: Use credentials (jane_smith, pass456) to assign grades.
    • Admin: Use credentials (admin, admin) to add new students.

Known Limitations

  • WildFly Admin Console Security: The admin console does not have TLS enabled, leaving administrative credentials vulnerable.
  • Development Configuration: Default credentials are used for MariaDB and WildFly, which is not secure for production environments.
  • No Vault Integration for Key Management: Keys are managed through file permissions rather than a dedicated key management solution.
  • No Mutual TLS Between WildFly and MariaDB: Mutual TLS was not implemented due to documentation limitations.
  • Replay Attack Mitigation: Currently, the digital signature system lacks adequate protection against replay attacks.

About

"Esse3-Bootleg: A secure JavaEE web app for managing academic information, designed for teachers, students, and administrators with Dockerized deployment."

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published