Comments (1)
Thank you for your feedback.
If you support slots, is there a reason to not use them?
The truth is, I agree with you: your design is cleaner. The rationale for this, which admittedly was left undocumented, was to allow maximum header compression while still retaining the extensibility benefits of the format. My goal was to make the header small enough so that PUREE could double as a file format: the way it's specified currently allows the header to reduce to a mere 64-bytes of overhead.
In hindsight, I've committed a blatant violation of YAGNI: I attempted to make the format cover more scenarios, without an obvious need to do so. Was it justified here? Do people need to vary their file encryption algorithms as much as they do disk encryption algorithms? No, probably not: (1) it's harder to justify the need for alternative ciphers for files, and (2) there could easily be different specs for disks and files. But PUREE has dared to combine them into one, at the cost of a slight format complication, take it or leave it.
If you want to provide 3 bits of public information, you can encode them in random data.
I think you make a valid point, and really appreciate that you read the paper and put thought into it. What you're suggesting is essentially a time tradeoff: decrypting the header will be faster, but encrypting it will be slower. And since generally encryption will only happen once, this is a reasonable tradeoff to make.
However, consider that, with PUREE's current approach, the time spent deriving the meta-parameters is negligible compared to the time required to derive the password hash---i.e., no observable drop in speed or security. Yet, with your suggestion, the time taken to encrypt the header would take ~8x longer for the same security level.
from puree.
Related Issues (2)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from puree.