Giter VIP home page Giter VIP logo

horcrux's Introduction

Jesse's github stats

horcrux's People

Contributors

7h3w1zz avatar ajariel avatar benjamin-lee avatar dawidd6 avatar henrysdev avatar jesseduffield avatar pbek avatar semistrict avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

horcrux's Issues

Cant Bind files, no such File or directory

[maus@lolcat bind]$ tree
.
├── folder
│   ├── split_1_of_3.horcrux
│   ├── split_2_of_3.horcrux
│   └── split_3_of_3.horcrux
└── horcrux

1 directory, 4 files
[maus@lolcat bind]$ ./horcrux bind folder/
2020/07/13 08:49:03 open split_1_of_3.horcrux: no such file or directory

How do I solve this Problem?
Thanks!

How to get soul into file?

None of the examples explain how to get your soul into the computer so you can put it into the horcrux.

self-sufficient horcruxes

To guarantee the ability to recreate the original file from the horcruxes in the event that this repo would become lost there should be an option for the tool to return binary horcruxes that when executed run the horcrux program. Think like self extracting zip files in exe format.

So I can execute ./horcrux1 bind horcrux2 horcrux3 and recover the original file.

Number of required horcruxes differs between CLI and .horcrux files

If I run horcrux -t 3 -n 5 split diary.txt I get five .horcruxes, and each one contains

# THIS FILE IS A HORCRUX.
# IT IS ONE OF 5 HORCRUXES THAT EACH CONTAIN PART OF AN ORIGINAL FILE.
# THIS IS HORCRUX NUMBER 1.
# IN ORDER TO RESURRECT THIS ORIGINAL FILE YOU MUST FIND THE OTHER 4 HORCRUX(ES) AND THEN BIND THEM USING THE PROGRAM FOUND AT THE FOLLOWING URL
# https://github.com/jesseduffield/horcrux

-- HEADER --
[...]
-- BODY --
[...]

It says I must need this horcrux plus other four to resurrect the original file, while If I delete three horcruxes, ./horcrux bind . returns

You do not have all the required horcruxes. There are 3 required to resurrect the original file. You only have 2

saying that I need at least (only) three horcruxes

Is this a feature? ; )


EDIT: I also noticed a t>n error:

  • If I run .horcrux -n 5 split diary.txt and enter t=99 I get the following message. Should the interval be "[2-5]" instead of "(2-99)"?
How many horcruxes should be required to reconstitute the original file? If you require all horcruxes, the resulting files will take up less space, but it will feel less magical (2-99): 99
parts cannot be less than threshold
  • If I run .horcrux -t 5 split diary.txt and enter n=3 I get an error. Should the interval be "[5-inf]" instead of "(2-99)"?
How many horcruxes do you want to split this file into? (2-99): 3
parts cannot be less than threshold

Unrelated request, is it possible to add armv7h to the list of pre-released binaries?

Great minds think alike

https://github.com/xkortex/passcrux

This town ain't big enough for two Harry-Potter-influenced Hashicorp-SSS-based data-splitting applications written in Golang...

So, wanna join forces?

:)

(Obviously, there's more than enough room in cyberspace, just was quoting the old spaghetti western trope :) )

Hashes

Hi mate,
It seems the hashes are different to the ones listed. I'm very new to Github and development.
Can you please upload the current hashes?
Apologies in advance if I haven't understood something about the process.
Cheers

Data Encryption - no Integrity

The project uses an un-verified secret sharing scheme for the key, which can be sufficient given an appropriate thread model. But it should be detectable if the either the data or the key has been tampered with (of course, replacing them altogether is still possible, but the problem of authenticity is not tackled at all in this project, which again is ok for this project).

However, unauthenticated OFB encryption is used (essentially a stream cipher), which allows for arbitrary bitwise flips of the plaintext and is undetectable by this library.

Countermeasures:

  1. Verify that the contents of each threshold file are actually the same
  2. Use ChaCha20-Poly1305 as an AEAD scheme, instead of OFB.

It's no issue at the moment, as each key is only used once, but please use a random IV as well.

Suggestion: Use reed-solomon encoding to reduce data size

The current implementation of the program appears to copy the encrypted file into each horcrux, which becomes pretty storage intensive with a larger file and more horcruxes.

n is the number of horcruxes, t the number needed to ressurect, s is size of the file, t ≤ n
Reed-solomon encoding can split the original file into n pieces, each piece has a size of s/t. Any combination of t pieces can be used to recreate the original file.

So the total space used by the horcruxes would be n*(s/t) instead of n*s.

This should also ensure the integrity of the data as the reconstruction of the file should fail if a piece is modified.

Proposal: Small GUI

Good day! Small sugestion:

It would be awesome to see smaaaal GUI for more comfortable and easy usage to spllit\join files :)

Just make small scatch what it can looks like...

P.S. I could help with translation to other languages and draw vector logo

Thanks for your work that already had been done!

2023-12-07_20-36

Option for XOR implementation

For users who want to require exactly N of N keys, XOR would be the safest, most performant, most reliable option.

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.