Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WNpU2-0006C4-28 for bitcoin-development@lists.sourceforge.net; Wed, 12 Mar 2014 20:10:34 +0000 Received-SPF: pass (sog-mx-2.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.216.173 as permitted sender) client-ip=209.85.216.173; envelope-from=will.yager@gmail.com; helo=mail-qc0-f173.google.com; Received: from mail-qc0-f173.google.com ([209.85.216.173]) by sog-mx-2.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1WNpU1-0006od-BD for bitcoin-development@lists.sourceforge.net; Wed, 12 Mar 2014 20:10:34 +0000 Received: by mail-qc0-f173.google.com with SMTP id r5so14339qcx.32 for ; Wed, 12 Mar 2014 13:10:27 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.140.23.209 with SMTP id 75mr11931250qgp.89.1394655027910; Wed, 12 Mar 2014 13:10:27 -0700 (PDT) Received: by 10.140.31.135 with HTTP; Wed, 12 Mar 2014 13:10:27 -0700 (PDT) In-Reply-To: <5320BDD1.50001@gk2.sk> References: <44fcb02b-3784-45a6-816a-312c78d940cd@me.com> <5320B7F1.8060701@gk2.sk> <5320BDD1.50001@gk2.sk> Date: Wed, 12 Mar 2014 15:10:27 -0500 Message-ID: From: William Yager To: Pavol Rusnak Content-Type: multipart/alternative; boundary=001a11c1342285dbd204f46e6d0d X-Spam-Score: -0.6 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (will.yager[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1WNpU1-0006od-BD Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] [RFC] Proposal: Base58 encoded HD Wallet root key with optional encryption X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Mar 2014 20:10:34 -0000 --001a11c1342285dbd204f46e6d0d Content-Type: text/plain; charset=ISO-8859-1 On Wed, Mar 12, 2014 at 3:04 PM, Pavol Rusnak wrote: > On 03/12/2014 08:55 PM, William Yager wrote: > > The proposed BIP uses a bloom filter, so it has both plausible > deniability *and > > *typo checking. The bloom filter is optimized for two elements and will > > catch something like 99.9975% of typos, despite allowing two different > > passwords. > > Ok, I see. So the spec allows one real and one fake password. That is > something I don't consider plausible deniability. I am not saying that > this solution is wrong, I find it quite interesting, but it's not > plausible deniability. ;-) > It's a little more nuanced than that. There are *always* at least two passwords. If the user doesn't want a second password, a random one is generated for them. A wallet with two known encryption keys and only one known encryption key are indistinguishable. If compelled to decrypt, there is no way to prove that the user actually knows a second password. > > >> I'm afraid one would end up with code generated in one client that is > >> unusable in a different client, because the client's developer thought > >> that using fancier algorithm instead of the proposed ones was a good > idea. > >> > >> > > This is clearly in violation of the spec. > > Ah, I misunderstood. I thought that outsourcing the KDF means allowing > the 3rd party to use any KDF instead of the specified ones. What would > be the reason to outsource if this is not possible, anyway? > > Yes, the "outsourcing" terminology is a little confusing. The idea is this: You have a little device, like a Trezor. It has very little RAM and very little CPU power. However, you want to use a powerful key-stretching algorithm (like the maximum Scrypt KDF defined in the spec). One way to implement this is to allow semi-trusted devices (like desktop PCs) to do all the "heavy lifting". The way the spec is defined, it is easy to have a more powerful device do all the tough key stretching work without significantly compromising the security of the wallet. Will --001a11c1342285dbd204f46e6d0d Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Wed, Mar 12, 2014 at 3:04 PM, Pavol Rusnak <stick@gk2.sk> wrote:
On 03/12/2014 08:55 PM, William Yager wrote:
> The proposed BIP uses a bloom filter, so it has both plausible deniabi= lity *and
> *typo checking. The bloom filter is optimized for two elements and wil= l
> catch something like 99.9975% of typos, despite allowi= ng two different
> passwords.

Ok, I see. So the spec allows one real and one fake password. That is=
something I don't consider plausible deniability. I am not saying that<= br> this solution is wrong, I find it quite interesting, but it's not
plausible deniability. ;-)

It's a l= ittle more nuanced than that. There are *always* at least two passwords. If= the user doesn't want a second password, a random one is generated for= them. A wallet with two known encryption keys and only one known encryptio= n key are indistinguishable. If compelled to decrypt, there is no way to pr= ove that the user actually knows a second password.
=A0

>> I'm afraid one would end up with code generated in one client = that is
>> unusable in a different client, because the client's developer= thought
>> that using fancier algorithm instead of the proposed ones was a go= od idea.
>>
>>
> This is clearly in violation of the spec.

Ah, I misunderstood. I thought that outsourcing the KDF means allowin= g
the 3rd party to use any KDF instead of the specified ones. What would
be the reason to outsource if this is not possible, anyway?

<= br>
Yes, the "outsourcing" terminology is a little conf= using. The idea is this: You have a little device, like a Trezor. It has ve= ry little RAM and very little CPU power. However, you want to use a powerfu= l key-stretching algorithm (like the maximum Scrypt KDF defined in the spec= ). One way to implement this is to allow semi-trusted devices (like desktop= PCs) to do all the "heavy lifting". The way the spec is defined,= it is easy to have a more powerful device do all the tough key stretching = work without significantly compromising the security of the wallet.

Will=A0

--001a11c1342285dbd204f46e6d0d--