<p dir="ltr">Thanks Mike I&#39;ll have to read that threshold signature paper. </p>
<p dir="ltr">I am familiar with the Princeton threshold signature but I was under the impression a single key needed to be generated on a single device then split and distributed.</p>
<p dir="ltr">Does this scheme work the same way? </p>
<p dir="ltr">I would have concerns about generating a key on a compromised computer. </p>
<div class="gmail_quote">On Nov 8, 2014 11:05 AM, &quot;Mike Hearn&quot; &lt;<a href="mailto:mike@plan99.net">mike@plan99.net</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Here is a summary of current developments in the space of decentralised 2-factor Bitcoin wallets. I figured some people here might find it interesting.<div><br></div><div>There has been very nice progress in the last month or two. Decentralised 2FA wallets run on a desktop/laptop and have a (currently always Android) smartphone app to go with them. Compromise of the wallet requires compromise of both devices.<div><br></div><div>Alon Muroch and Chris Pacia have made huge progress on &quot;Bitcoin Authenticator&quot;, their (HD) wallet app. The desktop side runs on Win/Mac/Linux and the mobile side runs on Android. Sending money from the desktop triggers a push notification to the mobile side, which presents the transaction for confirmation. Additionally the desktop wallet has a variety of other features like OneName integration. It&#39;s currently in alpha, but I suspect it will be quite popular once released due to its focus on UI and the simple mobile security model. I&#39;ve tried it out and it worked fine.</div><div><br></div><div><a href="https://www.bitcoinauthenticator.org/" target="_blank">https://www.bitcoinauthenticator.org/</a></div><div><a href="https://github.com/cpacia/BitcoinAuthenticator/commits/master" target="_blank">https://github.com/cpacia/BitcoinAuthenticator/commits/master</a>    (mobile)<br></div><div><a href="https://github.com/negedzuregal/BitcoinAuthWallet" target="_blank">https://github.com/negedzuregal/BitcoinAuthWallet</a>   (desktop)<br></div><div><br></div><div>Bitcoin Authenticator uses P2SH/CHECKMULTISIG to provide the 2-factor functionality. However, this has various downsides that are well known:  less support for the address type and larger transactions that waste block chain space + result in higher fees.</div><div><br></div><div>To solve this problem Christopher Mann and Daniel Loebenberger from Uni Bonn have ported the efficient DSA 2-of-2 signing protocol by MacKenzie and Reiter to ECDSA, and implemented their own desktop/Android wallet app pair showing that it works and has good enough performance. This means that P2SH / CHECKMULTISIG is no longer required for the two factor auth case, and thus it&#39;s as cheap as using regular addresses.</div><div><br></div><div><a href="https://github.com/ChristopherMann/2FactorWallet" target="_blank">https://github.com/ChristopherMann/2FactorWallet</a><br></div></div><div><a href="https://eprint.iacr.org/2014/629.pdf" target="_blank">https://eprint.iacr.org/2014/629.pdf</a><br></div><div><br></div><div>Their protocol uses an interesting combination of ECDSA, Paillier homomorphic encryption and some zero knowledge proofs to build a working solution for the 2-of-2 case only. Their app bootstraps from a QR code that includes a TLS public key and IP address of the desktop: the mobile app then connects to it directly, renders the transaction and performs the protocol when the user confirms. The protocol is online, so both devices must be physically present.</div><div><br></div><div>Their code is liberally licensed and looks easy to integrate with Alon and Chris&#39; more user focused work, as both projects are built with Android and the latest bitcoinj. If someone is interested, merging Christopher/Daniel&#39;s code into the bitcoinj multisig framework would be a useful project, and would make it easier for wallet devs to benefit from this work. I can write a design doc to follow if needed.</div><div><br></div><div>Currently, neither of these projects implement support for BIP70, so the screen you see when signing the transaction is hardly user friendly or secure: you just have to trust that the destination address you&#39;re paying to isn&#39;t tampered with. Support for sending a full payment request between devices is the clear next step once these wallets have obtained a reasonable user base and are stable.</div><div><br></div><div><br></div></div>
<br>------------------------------------------------------------------------------<br>
<br>_______________________________________________<br>
Bitcoin-development mailing list<br>
<a href="mailto:Bitcoin-development@lists.sourceforge.net">Bitcoin-development@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/bitcoin-development" target="_blank">https://lists.sourceforge.net/lists/listinfo/bitcoin-development</a><br>
<br></blockquote></div>