All answers below are full valid for "fbkz" generator.
Can you describe the algorithm used for generating the keys?
- How are address sequences generated? Hashing the previous private key to get the next?
- How is the first address generated?
- What algorithm is used to convert passphrase into private key data? (kinda the same questions as above
1) two passphrases through some obfuscation process produce long pseudorandom
string(here i'll call it pass_string.
It is possible to restore all keys in sequence ( and generate more i.e. extend sequence further with additional keys ) from this same pass_string.
The pass_string even could be stored in safe place instead of remembering of passphrases, though it is not the most secure decision.
2)Then from pass_string and one of Fibonacci numbers script will generate private key.
Every next key will be generated from this same pass_string and next Fibonacci number.
So the first key is not any different from others by method of creation.
And not, next and previous keys in seq. do not link together through hashing, but only
through Fibonacci sequence and using of the same pass_string.
Here we call it "sequence" and indeed the keys are sorta "linked"
through Fib. numbers sequence.
But i prefer to think of it as of set of 667 keys.
One can use any of them, a smaller subset of full.
- Is it possible for someone to link the addresses together? What information does one need, to be able to determine that two different addresses from this sequence belong to the same person.
This is especially important to know if someone were to create the addresses/keys with their passphrase, and then an update to the project changes the generation algorithm to produce a different sequence. Users need to know how to recover their private keys from the original passphrase.
Everyone who will have your two passphrases will be able to recreate all your keys.
So keep them unique and top secret
There are two measures against changes in project's algo (made by developers in the future) :
1) After checkout of "fbkz" store multiple copies of it on various media you can access.
2) You can fork this project on github.com
For restoring lost private keys one will need to have :
1) 2 initial passphrases.
2) Exactly the same set of utilities (esp. "fbkz" script) that were used for creation of sequence of private keys.
Even more security can be achieved by custom tweaking of "fbkz" script
in several places.
Even minimal changes will result in completely diff. sequence of keys from the same pass_string.
For example :
In fbkz in string
xbase_chars = '~!@#$%^&*()-+?ABCDEFGHJKLMNOPQRSTUVWXYZ0123456789abcdefghijkmnopqrstuvwxyz'
drop any 1 character in right side of equation you don't like or change it to another or add one somewhere.
Say add "+" at the end :
xbase_chars = '~!@#$%^&*()-+?ABCDEFGHJKLMNOPQRSTUVWXYZ0123456789abcdefghijkmnopqrstuvwxyz+'
Save and remember YOUR changes. Now you have your own special top-secret keygenerator.