PROJECT
PROPOSAL
How the Project Will Work:......................................................................................................... 1
Libraries and Crates Used:......................................................................................................... 2
Inspiration and Examples:.......................................................................................................... 2
How Everything Comes Together:............................................................................................. 3
Overview:
RustSecureBackup is a cli tool to perform secure data backups and encrypts it with the addition
of secure backup features like transfers and management. Developed using Rust programming
language, this tool has two features, encrypting files and backing them up often with limited
storage space. Operating the strong encryption techniques such as AES-256, RustSecureBackup
enables ensuring the protected safety of all backed-up files. It also has Data Integrity Checks,
Compression and Flexible Restore options to present an all inclusive Data Security package. Due
to the nature of the terminal and line prompt it provided the necessary protection directly through
terminal for developers and system administrators.
How the Project Will Work:
   1. Encryption and Decryption Workflow:
           ○ Encryption: This will enable users to encrypt a particular file or a whole
            directory using a symmetric model of encryption such as AES-256. From
            the user, the tool will need a password or an encryption key in order to
            perform the encryption.
         ○ Decryption: Access can be regained and the file made to be understood by
            the user by entering the same password or key used in encrypting the files.
            The decrypted file will be translated into their original format as well as
            back their location.
   2. Backup Workflow:
         ○ Full Backup: The application will make a full copy of selected files or
            directories and then encrypt the copy before storing a copy at the location
            of the user’s choice.
         ○ Compression:To reduce disk usage, before storage, files will be
            compressed thus making the system light during backup.
   3. Data Integrity and Restoration:
         ○ Integrity Checks: Each backup will include a checksum or hash value to
            ensure that data has not been altered or corrupted during storage or transfer.
         ○ Restoration: The tool will provide a straightforward way to restore
            individual files or complete backups to their original state by decrypting
            and decompressing the data.
   4. User Interface:
         ○ The tool will have a simple command-line interface, making it easy to use
            for both beginners and advanced users.
        ○ Users will be able to execute commands to perform backups, check data
          integrity, encrypt/decrypt files, and restore data with detailed help and
          guidance provided for each command.
Libraries and Crates Used:
  1. Command-Line Argument Parsing:
       ○ Clap: This library is well-suited for parsing command-line arguments in
           Rust applications. It simplifies the process of defining commands, flags,
           and subcommands, making the tool's CLI intuitive and user-friendly.
  2. Encryption and Decryption:
       ○ RustCrypto: It will use the RustCrypto libraries, particularly the AES
           crate, to implement AES-256 encryption.
  3. Data Compression:
       ○ flate2: This crate provides tools for data compression and decompression
           using the DEFLATE algorithm. It supports various compression formats
           like ZIP, which will be useful for reducing backup file sizes.
  4. Data Integrity Checks:
       ○ ring: It will use the RING crate to generate cryptographic hash values
           (checksums) for each backup file. This will help in verifying the integrity of
           the data during restoration.
Inspiration and Examples:
  1. Restic (Go-based Backup Tool):
        ○ Restic is an open-source backup tool written in Go that focuses on secure
           and efficient backups. It serves as a great example of how to combine
           encryption and backups into a single tool.
        ○ Key Features: Restic’s use of AES-256 encryption, deduplication, and its
           efficient storage model have inspired some of the design choices for
           RustSecureBackup.
  2. rclone (Command-Line Cloud Storage Tool):
        ○ rclone is a popular tool for managing and syncing files to and from cloud
           storage. It offers a powerful command-line interface that has inspired the
           user-friendly design and command structure of RustSecureBackup.
        ○ Key Features: The way rclone handles file transfers, encryption, and data
           integrity checks serves as a good reference for building reliable backup
           solutions.
  3. Cryptomator (File Encryption Tool):
       ○ Cryptomator is a tool designed to encrypt files for secure cloud storage. Its
          focus on transparent encryption for end-users provides inspiration for
          RustSecureBackup’s approach to making encryption straightforward.
How Everything Comes Together:
  ● Encryption, compression, as well as data transfers, will be implemented to take
    advantage of Rust’s concurrency properties in order to avoid degradation in speed
    when presented with large data sets.
  ● The approach to secure the data with the help of encryption on the one hand and to
    have optimized backups on the other will provide users with a combination of
    security and recoverability of their data.