Frequently Asked Questions (FAQ)
Relevant source files
The following files were used as context for generating this wiki page:- README.md
- index.html
index.html(CSS styles, lines 5-85)index.html(Core JS Logic:CryptoSeededRandomandEncodingSystemclasses, lines 200-606)index.html(UI JS Logic: Event handlers and DOM manipulation, lines 608-1046)
This document answers common questions about the qib13 reproducible multi-deviation seed recovery system. The system is designed to transform a short, memorable 13-character "generator code" into a longer 55-character "seed" and recover it reliably. This is achieved by using a "master seed" to deterministically generate a set of encoding systems.
The primary goal is to offer high reliability and memorability for seed management, balancing cryptographic security (via the master seed) with user convenience (via the simple generator code). The multi-deviation architecture provides multiple recovery paths, enhancing data integrity.
Sources: README.md:7-13
System Architecture & Core Concepts
What are the main components of the qib13 system?
The system is built on four core components that work together to encode and decode information.
| Component | Description | Default Value / Example | Source |
|---|---|---|---|
| Master Seed | A user-provided string that deterministically generates all encoding systems. It is the root of trust. | xtphkxlzrkleosumdxykzmmhzdtaqdsfbzimlwglctrcezpffqtbfhbiakksgwauprtbhfflulpnrbhghbvpnwqhyozkjgsavudi | index.html:204-205 |
| Encoding Systems | A set of systems (1 "Original" + N "Deviation") generated from the Master Seed. Each system has unique matrices and permutations. | 1 Original + 10 Deviation systems by default. | index.html:698-709 |
| Generator Code | A 13-character lowercase string (a-z) that is the input message to be encoded. | abcdefghijklm | README.md:31-35 |
| Seed | The 55-character lowercase string (a-z) output by an encoding system. It contains the generator code plus parity data. | e.g., qibkzrjx... | README.md:46-49 |
This diagram illustrates the relationship between the components.
Sources: README.md:15-26, index.html:665-696
How are the encoding systems generated?
All encoding systems are generated deterministically from the master seed using a cryptographically secure pseudo-random number generator (CSPRNG) based on HMAC-SHA256.
- A
CryptoSeededRandominstance is created using the master seed. - For each system, a unique seed is derived by appending a suffix (e.g.,
-original-1,-deviation-2) to the master seed. - This derived seed is used to initialize a new
CryptoSeededRandominstance for that specific system. - The RNG is then used to generate random matrices and a random permutation for the
EncodingSystemobject.
This process ensures that the same master seed always produces the exact same set of encoding systems.
Sources: index.html:712-718, 720-735, 737-752
What is the difference between an "Original" and a "Deviation" system?
The primary difference lies in their structure and the matrices they use for generating parity data. This affects the length and composition of the final seed.
| Feature | Original System | Deviation System |
|---|---|---|
| Type ID | original | deviation |
| Parity Matrices | One matrix P (42x13) | Two matrices P1 (15x13) and P2 (27x13) |
| Parity Length | 42 characters | 42 characters (15 from P1 + 27 from P2) |
| Codeword Structure | [message(13), parity(42)] | [message(13), parity1(15), parity2(27)] |
The first system generated (ID 1) is always an "Original" system. Subsequent systems are "Deviation" systems.
Sources: index.html:482-491, 493-507, 720-735
Using the Tool
How do I generate a 55-letter seed?
You can generate a seed from a 13-letter generator code using the "Generate Seed" tab.
- Input: Enter your 13-letter generator code in the
generatorCodeInputfield. - Select Mode: Choose which encoding system to use.
- Original Mode: Uses the first system (System 1).
- Deviation Mode: Uses the second system (System 2).
- Random System: Uses a randomly selected system from the generated set.
- Specific System: Allows you to specify the exact system index to use.
- Generate: Click the "Generate 55-Letter Seed" button. The
generateSeed()function is called, which selects the appropriateEncodingSystemand calls itsgenerateSeedmethod.
The process is visualized below:
Sources: index.html:125-149, 810-858
How do I recover a generator code from a seed?
Recovery is done via the "Recover Code" tab. You provide the 55-letter seed and choose a recovery strategy.
- Input: Enter the 55-letter seed in the
seedInputfield. - Select Mode:
- Sequential Recovery: Tries every generated system in order until one successfully decodes the seed. This is the most robust method.
- Try Original Only: Only attempts to decode using System 1.
- Try Specific System: Attempts to decode using only the specified system index.
- Recover: Click "Recover Generator Code". The
recoverGeneratorCode()function is called.
In sequential mode, the application iterates through the allSystems array, calling recoverGeneratorCode(seed) on each system instance within a try...catch block. A success is when the method returns a code without throwing an error, which indicates the parity checks passed.
Sources: index.html:151-171, 860-947
What is the purpose of the Batch Test?
The "Batch Recovery Test" tab provides a way to verify the integrity and correctness of the entire system. The runBatchTest() function performs the following steps:
- Generates 5 random test cases. Each case consists of:
- A random 13-letter generator code.
- A randomly selected encoding system.
- The 55-letter seed produced by encoding the code with that system.
- For each test case, it attempts a sequential recovery, trying all available systems.
- It records whether the original generator code was successfully recovered and which system was used.
- Finally, it displays a summary including the success rate, total attempts, and detailed results for each test case.
This feature is crucial for ensuring that the encoding and decoding processes are perfectly symmetrical and that the system behaves as expected.
Sources: index.html:173-181, 949-1025
Security & Implementation
How is randomness handled to ensure reproducibility?
The system uses a custom, deterministic CSPRNG implemented in the CryptoSeededRandom class. This class uses an HMAC-SHA256 algorithm in counter mode.
- Initialization: The RNG is initialized with a seed string (e.g., the master seed). This seed is hashed with SHA-256 to create an internal key.
- Byte Generation: To generate random bytes, the RNG computes
HMAC-SHA256(key, counter), where the counter is an 8-byte integer that increments with each request. - Number Generation: The generated bytes are consumed to produce 32-bit unsigned integers, which are then scaled to floats in the range
[0, 1)or used for integer generation with rejection sampling to avoid bias.
This ensures that for a given initial seed, the RNG will always produce the exact same sequence of "random" numbers, which is essential for deterministically re-generating the encoding systems. A fallback pure-JS implementation of SHA-256 and HMAC is included for environments without the Web Crypto API.
Sources: index.html:200-457%60%20or%20used%20for%20integer%20generation%20with%20rejection%20sampling%20to%20avoid%20bias.%0A%0AThis%20ensures%20that%20for%20a%20given%20initial%20seed%2C%20the%20RNG%20will%20always%20produce%20the%20exact%20same%20sequence%20of%20%22random%22%20numbers%2C%20which%20is%20essential%20for%20deterministically%20re-generating%20the%20encoding%20systems.%20A%20fallback%20pure-JS%20implementation%20of%20SHA-256%20and%20HMAC%20is%20included%20for%20environments%20without%20the%20Web%20Crypto%20API.%0A%0ASources%3A%20%5Bindex.html%3A200-457), README.md:118-120
What are the security implications of using this tool?
The security of qib13 is entirely dependent on the secrecy of the master seed.
- With Master Seed Secrecy: The system is very secure. An attacker without the master seed cannot regenerate the encoding systems and would have to break the underlying cryptography. The total entropy is a combination of the master seed's entropy, the generator code's entropy (~61 bits), and the deviation index entropy.
- With Master Seed Compromise: If the master seed is exposed, the security reduces to just the entropy of the 13-character generator code and the number of deviation systems. This is significantly weaker and may be vulnerable to brute-force attacks.
Therefore, it is critical to choose a strong, unique master seed and keep it confidential. Using the default master seed is not recommended for secure applications.
Sources: README.md:57-75
Why is there a warning about using aaaaa... as a generator code?
The README.md file explicitly warns against using aaaaa... as a generator code, stating it is "turned off". While the provided index.html source code does not show an explicit block for this specific code, the warning implies that such simple, low-entropy generator codes are highly discouraged. They are predictable and would be among the first to be tested in a brute-force attack if the master seed were ever compromised. Best practice is to use a generator code that is memorable to the user but not easily guessable by others.
Sources: README.md:4, README.md:162-165