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 1WW7jG-0003k6-KX for bitcoin-development@lists.sourceforge.net; Fri, 04 Apr 2014 17:16:34 +0000 X-ACL-Warn: Received: from qmta08.westchester.pa.mail.comcast.net ([76.96.62.80]) by sog-mx-2.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1WW7jF-0002lk-NT for bitcoin-development@lists.sourceforge.net; Fri, 04 Apr 2014 17:16:34 +0000 Received: from omta13.westchester.pa.mail.comcast.net ([76.96.62.52]) by qmta08.westchester.pa.mail.comcast.net with comcast id lsqE1n00617dt5G58tGUmH; Fri, 04 Apr 2014 17:16:28 +0000 Received: from crushinator.localnet ([IPv6:2601:6:4800:47f:219:d1ff:fe75:dc2f]) by omta13.westchester.pa.mail.comcast.net with comcast id ltGT1n0174VnV2P3ZtGUJA; Fri, 04 Apr 2014 17:16:28 +0000 From: Matt Whitlock To: Gregory Maxwell Date: Fri, 04 Apr 2014 13:16:27 -0400 Message-ID: <60732286.zdbbI6td0e@crushinator> User-Agent: KMail/4.12.4 (Linux/3.12.13-gentoo; KDE/4.12.4; x86_64; ; ) In-Reply-To: References: <1888881.3JyvKYNUFa@crushinator> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-Spam-Score: 4.0 (++++) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. 4.0 HK_SCAM_N2 BODY: HK_SCAM_N2 -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [76.96.62.80 listed in list.dnswl.org] 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: 1WW7jF-0002lk-NT Cc: bitcoin-development Subject: Re: [Bitcoin-development] Presenting a BIP for Shamir's Secret Sharing of Bitcoin private keys 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: Fri, 04 Apr 2014 17:16:34 -0000 On Friday, 4 April 2014, at 10:08 am, Gregory Maxwell wrote: > On Fri, Apr 4, 2014 at 9:36 AM, Matt Whitlock = wrote: > > Are you proposing to switch from prime fields to a binary field? Be= cause if you're going to "break up" a secret into little pieces, you ca= n't assume that every piece of the secret will be strictly less than so= me 8-bit prime modulus. And if you're going to do a base conversion, th= en you have to do arbitrary-precision integer math anyway, so I don't s= ee that the small field really saves you any code. >=20 > Yes, I'm proposing using the binary extension field of GF(2^8). Ther= e > are many secret sharing and data integrity applications available > already operating over GF(2^8) so you can go compare implementation > approaches without having to try them our yourself. Obviously anythin= g > efficiently encoded as bytes will efficiently encode over GF(2^8). Honestly, that sounds a lot more complicated than what I have now. I ma= de my current implementation because I just wanted something simple tha= t would let me divide a private key into shares for purposes of dissemi= nation to my next of kin et al. > > Weren't you just clamoring for implementation *simplicity* in your = previous paragraph? :) >=20 > I do think there is a material difference in complexity that comes in= > layers rather than at a single point. It's much easier to implement a= > complex thing that has many individually testable parts then a single= > complex part. (Implementing arithmetic mod some huge P is quite a bit= > of work unless you're using some very high level language with > integrated bignums=E2=80=94 and are comfortable hoping that their big= nums are > sufficiently consistent with the spec). I already have a fairly polished implementation of my BIP, and it's not= written in a "very high-level language"; it's C++, and the parts that = do the big-integer arithmetic are basically C. I'm using the GMP librar= y: very straightforward, very reliable, very fast. Do you have a use case in mind that would benefit from byte-wise operat= ions rather than big-integer operations? I mean, I guess if you were tr= ying to implement this BIP on a PIC microcontroller, it might be nice t= o process the secret in smaller bites. (No pun intended.) But I get thi= s feeling that you're only pushing me away from the present incarnation= of my proposal because you think it's too similar (but not quite simil= ar enough) to a threshold ECDSA key scheme.