Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1X72qV-0005WU-At for bitcoin-development@lists.sourceforge.net; Tue, 15 Jul 2014 13:32:39 +0000 Received-SPF: pass (sog-mx-3.v43.ch3.sourceforge.com: domain of osfda.org designates 217.23.13.216 as permitted sender) client-ip=217.23.13.216; envelope-from=mw@osfda.org; helo=smtp.osfda.org; Received: from smtp.osfda.org ([217.23.13.216]) by sog-mx-3.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1X72qT-00020c-R7 for bitcoin-development@lists.sourceforge.net; Tue, 15 Jul 2014 13:32:39 +0000 Received: from [38.105.161.253] (unknown [38.105.161.253]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.osfda.org (Postfix) with ESMTPSA id 2833513A01B9; Tue, 15 Jul 2014 15:32:10 +0200 (CEST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) From: Michael Wozniak In-Reply-To: Date: Tue, 15 Jul 2014 09:32:01 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <365F4709-54A6-4E14-BA6F-BCFB36DBAA96@osfda.org> References: To: Andreas Schildbach X-Mailer: Apple Mail (2.1878.6) X-Spam-Score: -1.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 SPF_PASS SPF: sender matches SPF record -0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -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: 1X72qT-00020c-R7 Cc: bitcoin-development@lists.sourceforge.net Subject: Re: [Bitcoin-development] BIP 38 NFC normalisation issue 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: Tue, 15 Jul 2014 13:32:39 -0000 I have a python implementation that seems to pass this test vector: https://github.com/wozz/electrum/blob/bip38_import/lib/bip38.py#L299 On Jul 15, 2014, at 9:19 AM, Andreas Schildbach = wrote: > I think generally control-characters (such as \u0000) should be > disallowed in passphrases. (Even the use of whitespaces is very > questionable.) >=20 > I'm ok with allowing pile-of-poo's. On mobile phones there is = keyboards > just containing emoticons -- why not allow those? Assuming NFC works = of > course. >=20 >=20 > On 07/15/2014 03:07 PM, Eric Winer wrote: >> I don't know for sure if the test vector is correct NFC form. But = for >> what it's worth, the Pile of Poo character is pretty easily = accessible >> on the iPhone and Android keyboards, and in this string it's already = in >> NFC form (f09f92a9 in the test result). I've certainly seen it in >> usernames around the internet, and wouldn't be surprised to see it in >> passphrases entered on smartphones, especially if the author of a >> BIP38-compatible app includes a (possibly ill-advised) suggestion to >> have your passphrase "include special characters". >>=20 >> I haven't seen the NULL character on any smartphone keyboards, though = - >> I assume the iOS and Android developers had the foresight to know how >> much havoc that would wreak on systems assuming null-terminated = strings. >> It seems unlikely that NULL would be in a real-world passphrase = entered >> by a sane user. >>=20 >>=20 >> On Tue, Jul 15, 2014 at 8:03 AM, Mike Hearn > > wrote: >>=20 >> [+cc aaron] >>=20 >> We recently added an implementation of BIP 38 (password protected >> private keys) to bitcoinj. It came to my attention that the third >> test vector may be broken. It gives a hex version of what the NFC >> normalised version of the input string should be, but this does = not >> match the results of the Java unicode normaliser, and in fact I >> can't even get Python to print the names of the characters past = the >> embedded null. I'm curious where this normalised version came = from. >>=20 >> Given that "pile of poo" is not a character I think any sane user >> would put into a passphrase, I question the value of this test >> vector. NFC form is intended to collapse things like umlaut = control >> characters onto their prior code point, but here we're feeding the >> algorithm what is basically garbage so I'm not totally surprised >> that different implementations appear to disagree on the outcome. >>=20 >> Proposed action: we remove this test vector as it does not = represent >> any real world usage of the spec, or if we desperately need to >> verify NFC normalisation I suggest using a different, more = realistic >> test string, like Z=C3=BCrich, or something written in Thai. >>=20 >>=20 >>=20 >> Test 3: >>=20 >> * Passphrase =CF=92=CC=81=E2=90=80=F0=90=90=80=F0=9F=92=A9 = (\u03D2\u0301\u0000\U00010400\U0001F4A9; GREEK >> UPSILON WITH HOOK , COMBINING >> ACUTE ACCENT , NULL >> , DESERET CAPITAL LETTER LONG I >> , PILE OF POO >> ) >> * Encrypted key: >> 6PRW5o9FLp4gJDDVqJQKJFTpMvdsSGJxMYHtHaQBF3ooa8mwD69bapcDQn >> * Bitcoin Address: 16ktGzmfrurhbhi6JGqsMWf7TyqK9HNAeF >> * Unencrypted private key (WIF): >> 5Jajm8eQ22H3pGWLEVCXyvND8dQZhiQhoLJNKjYXk9roUFTMSZ4 >> * /Note:/ The non-standard UTF-8 characters in this passphrase >> should be NFC normalized to result in a passphrase >> of0xcf9300f0909080f09f92a9 before further processing >>=20 >>=20 >>=20 >>=20 >> = --------------------------------------------------------------------------= ---- >> Want fast and easy access to all the code in your enterprise? = Index and >> search up to 200,000 lines of code with a free copy of Black Duck >> Code Sight - the same software that powers the world's largest = code >> search on Ohloh, the Black Duck Open Hub! Try it now. >> http://p.sf.net/sfu/bds >> _______________________________________________ >> Bitcoin-development mailing list >> Bitcoin-development@lists.sourceforge.net >> >> https://lists.sourceforge.net/lists/listinfo/bitcoin-development >>=20 >>=20 >>=20 >>=20 >> = --------------------------------------------------------------------------= ---- >> Want fast and easy access to all the code in your enterprise? Index = and >> search up to 200,000 lines of code with a free copy of Black Duck >> Code Sight - the same software that powers the world's largest code >> search on Ohloh, the Black Duck Open Hub! Try it now. >> http://p.sf.net/sfu/bds >>=20 >>=20 >>=20 >> _______________________________________________ >> Bitcoin-development mailing list >> Bitcoin-development@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/bitcoin-development >>=20 >=20 >=20 >=20 > = --------------------------------------------------------------------------= ---- > Want fast and easy access to all the code in your enterprise? Index = and > search up to 200,000 lines of code with a free copy of Black Duck > Code Sight - the same software that powers the world's largest code > search on Ohloh, the Black Duck Open Hub! Try it now. > http://p.sf.net/sfu/bds > _______________________________________________ > Bitcoin-development mailing list > Bitcoin-development@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bitcoin-development