About Tuynuk
Tuynuk is an open-source file transfer application designed to make sharing files seamless and secure. Built using Flutter and C#, Tuynuk ensures that your files are transferred swiftly while maintaining end-to-end encryption to safeguard your data. Whether you're sending a small document or a large media file, Tuynuk handles it all with ease.
Visit our GitHub mobile application repository and GitHub backend repository to explore the code, contribute to the project, or download the latest release.
Tuynuk - Mobile
Overview
Tuynuk is a mobile application designed for secure, temporary file transfer. With this app, users can send and receive encrypted files within disposable sessions, ensuring that their data remains private and is not stored long-term. Built using Flutter and Dart, the app leverages advanced cryptographic techniques to provide robust security features, making it ideal for users who need a secure and ephemeral file transfer solution.
Features
- Disposable Sessions: Create temporary file transfer sessions that automatically expire after a certain period, ensuring no long-term data retention.
- End-to-End Encryption (E2EE): Secure files with AES encryption and elliptic curve cryptography, guaranteeing that only the intended recipient can access them.
- Asynchronous Operations: Use Dart isolates to handle encryption and decryption tasks in the background, providing a smooth user experience.
- Automatic Key Management: Generate and manage encryption keys for each session automatically, simplifying the user experience while maintaining security.
- User-Friendly Interface: Enjoy a simple and intuitive interface designed for quick and easy secure file transfer.
Screenshots
Installation
- Clone the repository:
git clone https://github.com/xaldarof/tuynuk.git
- Get dependencies:
flutter pub get
- Configure project:
sh sync.sh
- Run the application:
flutter run
Usage
Creating a Disposable Session
- Open the app and tap the "New Session" button.
- Select a contact to start a new file transfer session.
- Transfer files securely within the session. All files will be encrypted and only accessible within this session.
Sending and Receiving Files
- Within an active session, select the file you wish to send.
- The file will be encrypted and sent to the recipient.
- The recipient can then decrypt and access the file within the session.
Session Expiry
Sessions are designed to expire after a predefined period. Once a session expires, all files within the session will be permanently deleted, ensuring no residual data remains.
Technical Details
- AES Encryption and Decryption: The app uses AES encryption in CBC mode with PKCS7 padding for secure file encryption. Encryption and decryption can be handled asynchronously using Dart isolates for optimal performance.
- Elliptic Curve Cryptography: Tuynuk utilizes elliptic curve cryptography (ECC) for secure key exchanges and session key generation, ensuring that all cryptographic operations adhere to industry standards.
- Secure Random Number Generation: The app employs a cryptographically secure random number generator to create encryption keys and initialization vectors, providing high security for all cryptographic processes.
- Key Management: The app automatically handles key generation and management for each session, making it easy for users to focus on file transfer without worrying about cryptographic details.
Backend Documentation
Overview
The Tuynuk backend is responsible for handling the server-side operations necessary for secure and efficient file transfer. It provides the APIs, manages encryption keys, and ensures secure communication between clients.
Key Features
- RESTful API: Provides a RESTful API for file transfer operations, including file upload, download, and session management.
- End-to-End Encryption: Ensures all file transfers are encrypted from the sender to the receiver.
- Session Management: Manages disposable sessions that expire after a set period, ensuring no long-term data storage.
- Scalability: Designed to scale efficiently to handle a large number of concurrent file transfers.
Getting Started
- Clone the backend repository:
git clone https://github.com/niyozbekmirzayev/Tuynuk.git
- Navigate to the project directory:
cd Tuynuk
- Install the required dependencies:
npm install
- Set up the environment variables:
cp .env.example .env
Update the `.env` file with the necessary configuration details.
- Start the backend server:
npm start
API Endpoints
1. Create a New Session
POST /api/sessions
Creates a new disposable session for file transfer.
2. Upload a File
POST /api/sessions/:sessionId/files
Uploads a file to a specific session.
3. Download a File
GET /api/sessions/:sessionId/files/:fileId
Downloads a file from a specific session.