Secure ATM Banking System

Java β€’ JavaFX Interface β€’ Secure Authentication β€’ Encrypted Transactions

Project Overview

The Secure ATM Banking System is a full-stack project designed to simulate real-world ATM banking operations with a focus on security and user experience. Built using Java and JavaFX, the system implements secure authentication protocols, encrypted transactions, and a clean graphical user interface. It supports account registration, login authentication, deposits, withdrawals, balance checks, and account deletion, ensuring that all operations are processed safely through server-client communication. This project highlights best practices in network security, data integrity, and responsive UI design for critical financial applications.

Description

Account Creation and Authentication

Users can securely register new accounts with a username, password, and optional initial deposit. Passwords must be confirmed through double-entry verification to prevent mistyped credentials. All authentication attempts are processed by the server using encrypted verification to ensure that login information is not exposed during transmission. Failed login attempts are properly handled, and successful logins transition users seamlessly to the banking dashboard. This approach mirrors real-world secure login systems and ensures credential safety throughout the process.

Description

Transaction Handling and Encryption

All deposits, withdrawals, and balance checks are transmitted securely between the client and server. Each transaction request is accompanied by a MAC (Message Authentication Code) generated from a session key to ensure data integrity and prevent tampering. Upon receiving a transaction, the server verifies the MAC before processing, ensuring that no unauthorized modifications occur. Sensitive logs such as transaction histories are AES-encrypted on the server side to protect records even if unauthorized access were attempted. This combination of integrity checks and encryption ensures end-to-end security of financial operations.

Description

Graphical User Interface (GUI)

The user interface was built using JavaFX to create a clean, intuitive, and responsive experience. Users interact with the ATM system through distinct pages, including Login, Registration, Dashboard, and Transaction Management screens. UI elements were carefully styled for accessibility, featuring clear labeling, error prompts, and smooth navigation between operations. Custom styling ensures that even first-time users can easily understand how to create accounts, deposit funds, withdraw cash, and delete accounts securely. The front-end focus was to mimic a real ATM experience while providing an additional layer of usability.

Description

Server-Client Communication

Communication between the ATM Client and Bank Server follows a secure, session-based model. Upon login, a Master Session Key is securely exchanged using a Pre-Shared Key (PSK) Authentication Protocol. This session key is then used to derive encryption keys and integrity keys for protecting all subsequent messages. Every action β€” from balance checks to withdrawals β€” is authenticated and verified, preventing replay attacks or unauthorized modifications. This architecture mirrors industry-standard secure communication protocols used in modern financial networks.

Description

Real-World Testing Results

The Secure ATM Banking System was tested extensively under simulated real-world conditions, including invalid login attempts, malicious packet modifications, and concurrent transactions. In all cases, the system successfully detected unauthorized actions and prevented data breaches. User authentication was fast and reliable, while transaction processing maintained low latency even under high request loads. Audit logs remained securely encrypted and were successfully decrypted for authorized review when needed. These results confirmed the system’s effectiveness in maintaining security, integrity, and performance in realistic operational environments.

Description

Final Evaluation

The Secure ATM Banking System demonstrates how secure software engineering principles can be applied to simulate real-world banking operations. Through a combination of authentication protocols, encrypted communication, and user-focused interface design, the project delivered a fully functional banking environment resistant to common cyber threats. Key lessons included the importance of session key management, data integrity validation, and encryption best practices. This project serves as a strong example of combining backend security with frontend usability to build effective, real-world financial software systems.

Description

Collaborators

Syed Ammar Ali

Simrat Gill

Mohammad Al-Shalabi

View Project on GitHub
← Back to Home