Security considerations¶
What bitsplit is¶
bitsplit is a file-splitting tool. It separates a file into two parts — a small key and a large block — such that both are required to reconstruct the original.
What bitsplit is not¶
bitsplit is not encryption. It does not use ciphers, random IVs, or key derivation functions.
Key strength¶
The key contains 128 bits of data extracted from the file. Brute-forcing 2^128 variants (~3.4 × 10^38) is computationally infeasible with current and foreseeable technology.
For reference:
2^128 ≈ 3.4 × 10^38
All computers on Earth doing 10^18 operations/sec would need ~10^13 years
The universe is ~1.4 × 10^10 years old
Known properties¶
Deterministic¶
The same file always produces the same key and block. There is no randomness in the process.
Block is not encrypted¶
The block (data.bin) contains the lower bits of the file interpreted as a number. It is not ciphertext — it is a subset of the original data.
Format-aware attacks¶
If an attacker knows the file format (e.g., JPEG starts with FF D8 FF), they know some of the top bits, reducing the unknown key space. For JPEG (4-byte known header), the key space reduces from 2^128 to ~2^96 — still infeasible to brute-force.
Recommendations¶
Keep
key.txtprivate. Anyone with both the key and block can restore the file.Store key and block separately. The whole point is that neither is useful alone.
For sensitive data, consider using bitsplit in combination with real encryption (e.g., AES-256 via
gpgorage).
Comparison with encryption¶
Property |
bitsplit |
AES-256 |
|---|---|---|
Key source |
Derived from file |
Independent / random |
Deterministic |
Yes |
No (random IV) |
Block looks random |
No |
Yes |
Key size |
128 bits |
256 bits |
Speed |
Instant |
Fast |
Dependencies |
None |
Crypto library |