Git Product home page Git Product logo

Comments (2)

str4d avatar str4d commented on May 24, 2024 1

The reason for the memory usage spike is that passphrase encryption is intentionally memory-hard, to help make the passphrase difficult to brute-force. Rather than trying to use the same passphrase on every file, I'd recommend a tiered approach:

  • Generate an age identity and recipient for the user.
  • Encrypt the age identity using an age passphrase.

Individual files are encrypted to the user's age recipient, and the encrypted files are uploaded along with the encrypted identity. As a neat side-effect, the user doesn't need their passphrase to encrypt their files (but if you wanted this to be "required" then just don't store the age recipient, requiring the user to download and decrypt their age identity to re-derive the recipient).

To decrypt multiple files, the user first downloads and decrypts their age identity using their passphrase, and then uses that to decrypt the individual files. The memory-hard step then only happens once, no matter how many files are being decrypted. Once finished, the user can forget about the age identity, because they can always re-download and re-decrypt as long as they remember their passphrase.

from rage.

vfsfitvnm avatar vfsfitvnm commented on May 24, 2024

Thanks! Your approach seems reasonable :)

from rage.

Related Issues (20)

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.