<oembed><type>rich</type><version>1.0</version><author_name>npub1wccnjljxnarlx564vuc37hmuzuffurljevjnmuq4u0vjmh7e933sn3hnuq</author_name><author_url>https://nostr.ae/npub1wccnjljxnarlx564vuc37hmuzuffurljevjnmuq4u0vjmh7e933sn3hnuq</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2018-01-08&#xA;📝 Original message:On 08/01/18 05:22, Gregory Maxwell wrote:&#xA;&gt;&gt; https://github.com/satoshilabs/slips/blob/master/slip-0039.md&#xA;&#xA;Hey Gregory!&#xA;&#xA;Thanks for looking into the scheme. I appreciate your time!&#xA;&#xA;&gt; This specification forces the key being used through a one way&#xA;&gt; function, -- so you cannot take a pre-existing key and encode it with&#xA;&gt; this scheme.&#xA;&#xA;Originally, we used a bi-directional function to be able to encode and&#xA;decode the key in both directions using the passphrase. We stretched the&#xA;passphrase using KDF and then applied AES or other symmetric cipher&#xA;&#xA;We found the following (theoretical) problem:&#xA;&#xA;If an attacker has knowledge of few words from the beginning of shares,&#xA;they are able to reconstruct the beginning of the master secret and if&#xA;the size of the reconstruced master secret is bigger then the cipher&#xA;blocksize (for block ciphers; for stream ciphers 1 bit is enough), then&#xA;they can reconstruct the beginning of the seed.&#xA;&#xA;Can you find a scheme which does not have this problem? Or you think&#xA;this problem is not worth solving?&#xA;&#xA;&gt; The KDF it specifies is unconfigurable and fairly weak&#xA;&gt; (20000xhmac-sha2-- which can be cracked at about 0.7M passwords a&#xA;&gt; second on a single motherboard GPU cracker).&#xA;&#xA;Yes. We want this to be possible to be computed on TREZOR-like devices&#xA;on boot, similarly how we compute BIP39 on boot right now.&#xA;&#xA;&gt; The construction also&#xA;&gt; will silently result in the user getting a different private key if&#xA;&gt; they enter the wrong passphrase-- which could lead to funds loss.&#xA;&#xA;Again, this is by design and it is main point why plausible deniability&#xA;is achieved both in BIP39 and SLIP39. If we used a different&#xA;construction we&#39;d loose plausible deniability.&#xA;&#xA;&gt; It&#xA;&gt; is again, unversioned-- so it kinda of seems like it is intentionally&#xA;&gt; constructed in a way that will prevent interoperable use, since the&#xA;&gt; lack of versioning was a primary complaint from other perspective&#xA;&gt; users.  Of course, it fine if you want to make a trezor only thing,&#xA;&gt; but why bother BIPing something that was not intended for&#xA;&gt; interoperability?  Even for a single vendor spec the lack of&#xA;&gt; versioning seems to make things harder to support new key-related&#xA;&gt; features such as segwit.&#xA;&#xA;This is argument I keep having all the time.&#xA;&#xA;Suppose we&#39;d introduce a version to encode PBKDF2 rounds or even&#xA;different KDFs. We&#39;ll end up with different SLIP39 mnemonics, but they&#xA;will not be compatible among implementations (because TREZOR can only up&#xA;to 100.000 rounds of PBKDF2 and does not support Argon2 at all, while&#xA;other desktop implementation would rather use memory-hard Argon2).&#xA;&#xA;My gut feeling is that this would lead to WORSE interoperability, not&#xA;better. Look at BIP32 for example. There are lots of wallet that claim&#xA;they are BIP32 compatible, but in reality they use different paths, so&#xA;they are not compatible. BIP32 is a good standard, but in reality&#xA;&#34;BIP32-compatible&#34; does not mean anything, whereas when you say the&#xA;wallet is &#34;BIP44-compatible&#34; you can be sure the migration path works.&#xA;&#xA;&gt; The 16-bit &#34;checksum&#34; based on sha2 seems pretty poor since basing&#xA;&gt; small checksums on a cryptographic hash results in a fairly poor&#xA;&gt; checksum that is surprisingly likely to accept an errored string. Your&#xA;&gt; wordlist is 10 bits and you have much less than 1023*10 bits of input,&#xA;&gt; so you could easily have a 20 bit code (two words) which guaranteed&#xA;&gt; that up to two errored words would always be detected, and probably&#xA;&gt; could choose one which catches three words much more often 1:2^20&#xA;&gt; (sipa&#39;s crc tools can help find codes like this).&#xA;&#xA;Originally, we wanted to use 16-bit of CRC32 for checksum, but after the&#xA;discussion with Daan Sprenkels we were suggested to change this for&#xA;cryptographically strong function. The argument was that CRC32 contains&#xA;less entropy and mixing high-entropy data (secret) with low-entropy data&#xA;(checksum) is not a good idea.&#xA;&#xA;Also, there is an argument between a checksum and ECC. We discussed that&#xA;ECC might not be a good idea, because it helps the attacker to compute&#xA;missing information, while we only want to check for integrity. Also the&#xA;word mnemonic is itself a ECC, because if you see the word &#34;acadornic&#34;&#xA;it is probably the word &#34;academic&#34;.&#xA;&#xA;&gt; The metadata seems to make fairly little affordance to help users&#xA;&gt; avoid accidentally mixing shares from distinct sharings of the same&#xA;&gt; key. Is it the idea that this is the only likely cause of a checksum&#xA;&gt; error? (1:2^16 chance of silently returning the wrong key seems kinda&#xA;&gt; bad). -- I&#39;m not sure much could be done here, though, since&#xA;&gt; additional payload is precious.&#xA;&#xA;Yes, checksum is supposed to prevent that.&#xA;&#xA;&gt; As an aside, your specification might want to give some better advice&#xA;&gt; about the SSS since my experience virtually everyone gets it wrong in&#xA;&gt; ways that degrade or destroy its properties e.g. many fail to generate&#xA;&gt; the additional coefficients of the polynominal randomly which results&#xA;&gt; in insecurity (see armory for an example).   Oh, also, I believe it is&#xA;&gt; normally refereed to as &#34;SSS&#34; (three S)-- four S is the name of a&#xA;&gt; linux program for secret sharing.&#xA;&#xA;Will fix the spelling. About the generic advice about SSS, anyone is&#xA;welcome to contribute to the text.&#xA;&#xA;&gt; I&#39;m happy to see that there is no obvious way to abuse this one as a&#xA;&gt; brainwallet scheme!&#xA;&#xA;Agreed!&#xA;&#xA;-- &#xA;Best Regards / S pozdravom,&#xA;&#xA;Pavol &#34;stick&#34; Rusnak&#xA;CTO, SatoshiLabs</html></oembed>