Changes between Initial Version and Version 1 of Ticket #2, comment 4
- Timestamp:
- 2011-01-03T08:27:27Z (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #2, comment 4
initial v1 4 4 5 5 ------- 6 I am about to implement "deterministic generation of private key from small seed" [1] for Tahoe, so I need to come up with a function that takes an input of 96 bits and produces a 192-bit ECDSA private key. I'm going to have to support this functon forever (approximately) for backwards-compatibility reasons. I would really like the next release of Tahoe to be compatible with older Crypto++ versions. Also I would really like for this function to be as simple and clear as possible so that I can easily explain to other people how to implement it compatibly.6 I am about to implement "deterministic generation of private key from small seed" [1] for Tahoe, so I need to come up with a function that takes an input of 96 bits and produces a 192-bit ECDSA private key. I'm going to have to support this functon forever (approximately) for backwards-compatibility reasons. I would really like the next release of Tahoe to be compatible with older Crypto++ versions. Also I would really like for this function to be as simple and clear as possible so that I can easily explain to other people how to implement it compatibly. 7 7 8 My current code to do this is below (and I've earlier posted it to this list: [2]), but I'm not entirely satisfied with it because it seems rather ad-hoc. One of my earlier notes on this subject to this list, [2], says that I experimented with using X917RNG with a customization of Salsa20 to pretend that it has a block size of 32.8 My current code to do this is below (and I've earlier posted it to this list: [2]), but I'm not entirely satisfied with it because it seems rather ad-hoc. One of my earlier notes on this subject to this list, [2], says that I experimented with using X917RNG with a customization of Salsa20 to pretend that it has a block size of 32. 9 9 10 So, I ask everyone, what is the simplest efficient way to take a secret 96-bit input, and produce an output between [1, n) such that10 So, I ask everyone, what is the simplest efficient way to take a secret 96-bit input, and produce an output between [1, n) such that 11 11 12 a) if you know the 96-bit secret and use this algorithm, you always get the same output, and13 b) if you don't know the 96-bit secret, you can't learn anything about the output12 a) if you know the 96-bit secret and use this algorithm, you always get the same output, and 13 b) if you don't know the 96-bit secret, you can't learn anything about the output 14 14 15 Unless I, or someone, can think of a problem with this way to do it, or can propose a better way to do it, then I guess I'm going to proceed with this and then I'll be committed to maintaining it for a while.15 Unless I, or someone, can think of a problem with this way to do it, or can propose a better way to do it, then I guess I'm going to proceed with this and then I'll be committed to maintaining it for a while. 16 16 17 Regards,17 Regards, 18 18 19 Zooko20 21 [1] http://allmydata.org/trac/pycryptopp/ticket/2 # deterministic generation of private key from small seed22 [2] http://groups.google.com/group/cryptopp-users/browse_thread/thread/f30427601a5884f623 [3] http://groups.google.com/group/cryptopp-users/msg/c1041e508c8d870519 Zooko 20 21 [1] http://allmydata.org/trac/pycryptopp/ticket/2 # deterministic generation of private key from small seed 22 [2] http://groups.google.com/group/cryptopp-users/browse_thread/thread/f30427601a5884f6 23 [3] http://groups.google.com/group/cryptopp-users/msg/c1041e508c8d8705 24 24 25 25 ------- begin appended code 26 {{{ 26 27 static const char* TAG_AND_SALT = "102:pycryptopp v0.5.3 key derivation algorithm using Tiger hash to generate ECDSA 192-bit secret exponents," \ 27 28 "16:H1yGNvUONoc0FD1d,"; … … 69 70 return 0; 70 71 } 71 72 72 }}}