GithubHelp home page GithubHelp logo

whereisf1 / horizon-send Goto Github PK

View Code? Open in Web Editor NEW

This project forked from httpjamesm/horizon-send

0.0 0.0 0.0 1.82 MB

End-to-end encrypted file sharing.

Home Page: https://send.hrzn.cool

License: Mozilla Public License 2.0

Shell 0.24% JavaScript 2.59% TypeScript 0.78% HTML 1.31% Dockerfile 0.36% SCSS 6.01% Svelte 88.70%

horizon-send's Introduction

horizon-send

Horizon Send is a secure file sharing service that uses zero-knowledge end-to-end encryption to protect your files.

Encryption

Horizon Send uses libsodium-wrappers to encrypt files and associated metadata with AEAD XChaCha20-Poly1305 secret stream.

Flow

  1. Bob selects a file in the menu.
  2. Client grabs all the data about the file, such as contents, file name and mime-type.
  3. Client generates a random XChaCha20 secret stream key.
  4. Client hashes key with Argon2id13 with a cryptographically random salt.
  5. Client encrypts file data and metadata with the key.
  6. Client uploads the encrypted file and metadata to the server with the Argon2id13 hashed key for server-side validation.
  7. Client converts the key and salt to base64 and appends it to the download endpoint via URL fragment (which the browser does not send to the server).
  8. Bob copies the URL and sends it to Alice.
  9. Alice visits the URL and clicks "Download".
  10. Client grabs the key and salt from the URL fragment.
  11. Client hashes the key with Argon2id13 with the salt.
  12. Client requests the encrypted file and metadata from the server by passing along the hashed key.
  13. Client decrypts the file and metadata with the key.
  14. Client saves the file to disk.

Development

Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:

npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open

Building

To create a production version of your app:

npm run build

You can preview the production build with npm run preview.

To deploy your app, you may need to install an adapter for your target environment.

horizon-send's People

Contributors

httpjamesm 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.