diff options
author | Eric Lombrozo <elombrozo@gmail.com> | 2014-03-01 04:29:48 -0800 |
---|---|---|
committer | bitcoindev <bitcoindev@gnusha.org> | 2014-03-01 12:30:00 +0000 |
commit | b7bb6e8b0c07e694b30565c448425e56546ad79d (patch) | |
tree | 4ffdb8823fcad9fa6657a463dc63557b6d620fd8 | |
parent | b2d880bfd8c09a397621c32cec8be5d3fc9b4791 (diff) | |
download | pi-bitcoindev-b7bb6e8b0c07e694b30565c448425e56546ad79d.tar.gz pi-bitcoindev-b7bb6e8b0c07e694b30565c448425e56546ad79d.zip |
[Bitcoin-development] Making the H in HD keychains useful
-rw-r--r-- | 40/df961f78c2d1a800db06fb7994f9a12ec4c3bf | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/40/df961f78c2d1a800db06fb7994f9a12ec4c3bf b/40/df961f78c2d1a800db06fb7994f9a12ec4c3bf new file mode 100644 index 000000000..75152d7df --- /dev/null +++ b/40/df961f78c2d1a800db06fb7994f9a12ec4c3bf @@ -0,0 +1,165 @@ +Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] + helo=mx.sourceforge.net) + by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) + (envelope-from <elombrozo@gmail.com>) id 1WJj3I-0005Kl-32 + for bitcoin-development@lists.sourceforge.net; + Sat, 01 Mar 2014 12:30:00 +0000 +Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com + designates 209.85.220.47 as permitted sender) + client-ip=209.85.220.47; envelope-from=elombrozo@gmail.com; + helo=mail-pa0-f47.google.com; +Received: from mail-pa0-f47.google.com ([209.85.220.47]) + by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) + (Exim 4.76) id 1WJj3H-00056G-4G + for bitcoin-development@lists.sourceforge.net; + Sat, 01 Mar 2014 12:30:00 +0000 +Received: by mail-pa0-f47.google.com with SMTP id lj1so1925774pab.20 + for <bitcoin-development@lists.sourceforge.net>; + Sat, 01 Mar 2014 04:29:53 -0800 (PST) +X-Received: by 10.66.182.199 with SMTP id eg7mr9225463pac.135.1393676993276; + Sat, 01 Mar 2014 04:29:53 -0800 (PST) +Received: from [192.168.1.107] (cpe-76-88-33-166.san.res.rr.com. + [76.88.33.166]) + by mx.google.com with ESMTPSA id sm5sm2025056pab.19.2014.03.01.04.29.50 + for <bitcoin-development@lists.sourceforge.net> + (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); + Sat, 01 Mar 2014 04:29:51 -0800 (PST) +From: Eric Lombrozo <elombrozo@gmail.com> +Content-Type: multipart/signed; + boundary="Apple-Mail=_449E2016-C8B9-49D1-B3D2-D63D90C89667"; + protocol="application/pgp-signature"; micalg=pgp-sha1 +Message-Id: <B837A283-4B5B-4753-A4A2-1AA27F1A2175@gmail.com> +Date: Sat, 1 Mar 2014 04:29:48 -0800 +To: bitcoin-development@lists.sourceforge.net +Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) +X-Mailer: Apple Mail (2.1510) +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 FREEMAIL_FROM Sender email is commonly abused enduser mail provider + (elombrozo[at]gmail.com) + -0.0 SPF_PASS SPF: sender matches SPF record + -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: 1WJj3H-00056G-4G +Subject: [Bitcoin-development] Making the H in HD keychains useful +X-BeenThere: bitcoin-development@lists.sourceforge.net +X-Mailman-Version: 2.1.9 +Precedence: list +List-Id: <bitcoin-development.lists.sourceforge.net> +List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>, + <mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe> +List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development> +List-Post: <mailto:bitcoin-development@lists.sourceforge.net> +List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help> +List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>, + <mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe> +X-List-Received-Date: Sat, 01 Mar 2014 12:30:00 -0000 + + +--Apple-Mail=_449E2016-C8B9-49D1-B3D2-D63D90C89667 +Content-Transfer-Encoding: quoted-printable +Content-Type: text/plain; + charset=us-ascii + +I've been trying to find ways to make HD keychain wallets (BIP0032) = +really usable from an application development perspective. I think we = +all know a number of solid use cases and possible applications for the D = +in HD, but nobody seems to have really found a way to make use of the H = +in a way that is actually manageable from a usability standpoint. + +After pondering it a bit more, I think I've stumbled upon at least a = +couple issues that seem to give hints as to how we can change this. + +Hierarchical organizations do not generally tend to be designed up = +front, cast in stone. In the real world, hierarchies tend to evolve = +organically, growing new branches as entities differentiate themselves = +to different purposes. Organizations grow over time. Sometimes branches = +merge, sometimes branches die. This means that for HD keychains to be = +truly useful, they too need to be sufficiently flexible to adapt to the = +needs of a growing and evolving organization. It needs to be simple to = +create and move branches around as the need for them arises without = +having to plan the structure a priori. + +A significant problem I'm runnign into in trying to build applications = +around the BIP0032 standard is the lack of a clear separation between = +signing keys and hierarchical nodes. That's to say, a child of a node = +can either be used as a signing key or as a parent for new branches to = +the tree. =46rom a usability standpoint, what this means is that one = +must be very careful in how one allocates keys from the very beginning - = +if one mixes signing keys with new branching nodes in the same = +generation, the whole thing becomes a horrendous mess. Moreover, it is = +impossible to generally distinguish these two fundamentally different = +types of objects (at least from a use model perspective) just from the = +extended key representation, something that is certain to create = +significant confusion as we try to design applications that can share = +these types of objects. + +An organization might begin as a single individual who just wants to = +generate signing keys for him/herself. Later on, this individual might = +bring on another individual or two and create new branches for them. = +With the current HD keychain structure, unless this individual made sure = +to set aside these new branches from the start, the individual is now = +forced to mix the new branches in at the same level of the hierarchy as = +the signing keys. Instead, it should be possible to branch off any node = +without having to worry at all about whether or not that node has been = +used to generate signing keys at all. + +A possible workaround to this issue is to always allocate a specific = +child for hierarchical derivation and the rest of the children for = +signing keys. Then to create subbranches, the specific child would be = +used as the new parent, effectively alternating generations between = +signing keys and organizational nodes. However, this solution seems = +pretty ugly. + +A better solution, IMO, is to only use BIP0032 for organizational = +hierarchy and have a different mechanism for generating a sequence of = +signing keys from a given node. This different mechanism could be used = +standalone by those not needing the full set of hierarchical features. = +For those who do want to use the hierarchical features, it could be = +seeded by the keys in the BIP0032 hierarchy. These individual signing = +keys would NEVER be represented in the same format as the organizational = +hierarchy nodes, thus ensuring applications can share these structures = +without risk of confusion. + +Until we make this clear distinction between organizational hierarchy = +(which parallels real-world organizations) and signing keys (which are = +merely cryptographic primitives, preferably never even shown directly to = +most endusers), I think we'll fail to find good ways to make the H in HD = +keychains useful. + +-Eric Lombrozo + +--Apple-Mail=_449E2016-C8B9-49D1-B3D2-D63D90C89667 +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; + filename=signature.asc +Content-Type: application/pgp-signature; + name=signature.asc +Content-Description: Message signed with OpenPGP using GPGMail + +-----BEGIN PGP SIGNATURE----- + +iQIcBAEBAgAGBQJTEdK8AAoJEAA1EyJsW9n+mDcP/jcJqZ/Z3vbOzACBUJa3Kc2g +YjRJUD4TTXL7xrDpenVpmFQF5XVCCNTzt7aYo1Un1WZlGbeoIw2hzuaE4upU0bfT +RVcBr71+iSlU3E2SubY7LS8TXDd28GGoeb73HYlq44xLcuuOITLljkQjE21fg6dq +kh/rlBY31B0be0H1btESfG0ekzx2v0mvOs+dWefANX2MoGJpJtL0ZUyUmBRxYgdk +lEcxYXsP53CpMdcikR3EX1LjnWHqDaR/6dLhCnV3Ko6mZAFyXuK3Udj/FtskKlDG +RbquFY6z/ZzdAJSrOo8iUVGMyQdEektlNunHt7hyXmwwD7Hjn1KkWSlPQd3h3bcs +WE1BGcL9lVrXnmBTkfGm9KMgyiYHu63hr85cZ44vg3QIVTXUOzXnzYFVulgfDM6v +mZLSFIaVdCXx6bKX/oFedx1Z/vKtmazNXoga2bG53YDLGHay+06fydDykQ7mlSe9 +mtxV7cIf3F7MXlVyFeHSPnH/5eY98iH3jFc5B+QTyk+0IAN61GJ/tvXcR6tggg6+ +kYwY+HBVz2LUKAYrJVvqB5noAazP9V+no/VEHA+K3jWPvBP+9AlSr1AfO0yeT4k2 +gWQ7INCSn1QWX0/h+NiKbVRz/uYWQEWaSIdscKmuZK97dhRkaUGfGy01xdErQUX6 +vcu8zpRgdXYdT51O18rw +=glfk +-----END PGP SIGNATURE----- + +--Apple-Mail=_449E2016-C8B9-49D1-B3D2-D63D90C89667-- + + |