GithubHelp home page GithubHelp logo

saidrmansour / talkapp Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 986 KB

TalkSync is a secure chat application leveraging authentication and end-to-end encryption, enabling users to communicate with multiple users simultaneously, ensuring privacy and security in group conversations.

HTML 22.22% C# 75.93% CSS 1.68% JavaScript 0.16%

talkapp's Introduction

Secure Software Development Project: Secure Messaging Application

.NET C%23 HTML5 JavaScript CSS3 SQLite Google OAuth2 SQLite

Project Overview

This project is a secure messaging application designed to provide robust end-to-end encryption and federated authentication using Google OAuth. The primary objective is to protect users' personal information and ensure secure communication by leveraging advanced encryption techniques and secure authentication methods.

Features

End-to-End Encryption

  • Encryption and Decryption: All messages are encrypted on the server before being sent to the recipient and decrypted only when the recipient opens the message. Messages are also decrypted for the sender to display a thread of chats, simplifying the user interface.
  • Diffie-Hellman and AES: Diffie-Hellman algorithm is used for key exchange, ensuring strong encryption, while AES is used for the actual message encryption, providing robust data protection.

Federated Authentication

  • Google OAuth Integration: Users can log in using their existing Google accounts, simplifying access without compromising security. This minimizes the need for creating and remembering new passwords while leveraging the security of well-established authentication services.

User-Friendly Interface

  • Intuitive Design: The application features a responsive and easy-to-navigate interface, allowing users to start new conversations and manage existing ones effortlessly. The design focuses on simplicity and efficiency, making it accessible to users with varying technical skills.

Technology Stack

  • .NET 8
  • ASP.NET Core
  • Entity Framework Core
  • SQLite
  • Google OAuth
  • C#
  • HTML5
  • CSS3
  • JavaScript

Setup and Installation

Prerequisites

  • .NET SDK 8.0.5
  • Any IDE that supports .NET development (e.g., Visual Studio, VS Code)

Running the Application

  1. Clone the repository:

    git clone <repository_url>
    cd <repository_directory>
  2. Configure environment variables: Create a .env file in the root of the project and add the following:

    GOOGLE_CLIENT_ID=<your_google_client_id>
    GOOGLE_CLIENT_SECRET=<your_google_client_secret>
  3. Install dependencies:

    dotnet restore
  4. Update the database:

    dotnet ef database update
  5. Run the application:

    dotnet run
  6. Open the application: Open a web browser and navigate to http://localhost:7251/ to access the application.

Usage

  1. Login: Click on the login link to authenticate using Google OAuth.

  2. Send Messages: After authentication, users can send encrypted messages to other registered users.

  3. View Messages: Users can view their chat threads with other users, with messages being decrypted securely.

Security Measures

  • HTTPS Communication: Ensure all communication with the server is over HTTPS in production environments.
  • Secure Storage: Store sensitive information such as client secrets securely using environment variables or secure vault solutions.
  • IDataProtectionProvider: Private keys are secured using IDataProtectionProvider, which ensures that even if the database is compromised, the AES key required for decryption remains protected.

Documentation

  • API Documentation: Detailed API documentation for Google OAuth can be found here.
  • OAuth 2.0 Documentation: For more information on implementing OAuth 2.0 and OpenID Connect, refer to the official OAuth 2.0 documentation.

Contributing

  • Contributions to this project are welcome. Please fork the repository, make your changes, and submit a pull request.

License

  • This project is open-source and available under the MIT License.

talkapp's People

Contributors

saidrmansour avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.