Return-Path: Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id D56F8C0177 for ; Fri, 28 Feb 2020 17:42:19 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id C3ED886819 for ; Fri, 28 Feb 2020 17:42:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dRrSGaWkLKxF for ; Fri, 28 Feb 2020 17:42:19 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by whitealder.osuosl.org (Postfix) with ESMTPS id A41B986689 for ; Fri, 28 Feb 2020 17:42:18 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id y17so3921274wrn.6 for ; Fri, 28 Feb 2020 09:42:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:in-reply-to:from:autocrypt:subject:message-id:date:user-agent :mime-version:content-language; bh=6V7jucopqU/lus428DI0rL+PnH32yjahNAS4G5rOvGU=; b=Yjllu3Pxv80Wnku8c4FT9sxhVHfqN3PQD8llwU5R8dGVIOS2bmNvVkzBdOnXX1yV8j sLWCSkKHneb75qe2QPIY7PIaXfYkd5JAhA0K9WiaNnZx9dD8kVPPzhLDfSJ59J3I3TjI AkEOmj6iQJfceFFDAeRqwtkot3uv5b6QckAncRPhmqtpw1ZIGS3tNMttKl30K0evAmwv xyWYkMomk7+xQMXWit2jEgp6E092QAnzm9/t+TFhPcrVeUaVRrVhpLI3uQ48IjsAhuta SnlLnCcVVIg0tVHUWlPMpccxDh8sWX8WXlU+4w5cEkky7ZWmv7oeZgQfaoDzojOgvghf 0ZNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:in-reply-to:from:autocrypt:subject:message-id :date:user-agent:mime-version:content-language; bh=6V7jucopqU/lus428DI0rL+PnH32yjahNAS4G5rOvGU=; b=eT+mUFIZC9tUKwxIRoMqofUEDbYUnCCDbC32ed9IA0HFbxxpN/Lo1HGouq2pGpCofw tk4qyhB52wgyewZw2I8uOsENP91i+cu8I4eEtgigRSiZtOYFEtbWzFtaTtRUjGubMxxi RrozFtU9uTFmrisOEAl6rC11Ntt17r2fRR5OhIr0Y6O3/czYv8nv42Cuy0WGwfxc+xM0 fPL7daeXK6JSqNK8JXIgYj5TA9hRCvVcUD5E9veIuezN6yMvmgr7Sm9ytfhXlWHz8+w3 cO7znnBfVyhp8rYdqrZ32WMsKcY8YYM3zs4vkVR2FhBOWw6DIad0wyamFp6HTPnuxvPT MtvQ== X-Gm-Message-State: APjAAAXJKSdINNxQS5Bw3dejvyiLd7pr7O2v1DZWM1XQE65YgPNSjWu/ /AbAT7hBcPWT9Ci/uNiTskI1SG5N X-Google-Smtp-Source: APXvYqw70EBv1wfMdugDe5YiaLcFx7zmkrc2CxyHnUPwoSHE8UxUc98X7/EvCy9ItVhVUE4HeG5XlQ== X-Received: by 2002:a05:6000:1206:: with SMTP id e6mr6117772wrx.410.1582911736851; Fri, 28 Feb 2020 09:42:16 -0800 (PST) Received: from ?IPv6:2a02:1205:5002:1be0:4ddf:f761:add3:be64? ([2a02:1205:5002:1be0:4ddf:f761:add3:be64]) by smtp.gmail.com with ESMTPSA id z4sm12641135wrt.47.2020.02.28.09.42.15 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Feb 2020 09:42:15 -0800 (PST) To: bitcoin-dev@lists.linuxfoundation.org In-Reply-To: From: Marko Autocrypt: addr=mbencun@gmail.com; keydata= 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 AwmrMztlKLGt3w+MOOhrGbH254B+kjLZHO4= Message-ID: Date: Fri, 28 Feb 2020 18:42:15 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------49506797E3AF558C692BD907" Content-Language: en-US X-Mailman-Approved-At: Fri, 28 Feb 2020 17:51:08 +0000 Subject: Re: [bitcoin-dev] Nonce blinding protocol for hardware wallets and airgapped signers X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Feb 2020 17:42:20 -0000 This is a multi-part message in MIME format. --------------49506797E3AF558C692BD907 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thanks for starting this initiative; it has been a long standing goal of mine to implement and release this protocol. Your blog post on the topic actually inspired me to pick up this work again a few months ago. Jonas Nick has implemented the protocol in the secp256k1 library for Schnorr sigs here: https://github.com/bitcoin-core/secp256k1/pull/590 I have backported the same scheme to ECDSA in the secp256k1 library here, so it can be used also for current transactions: https://github.com/bitcoin-core/secp256k1/pull/669 I also made proof of concepts for the BitBox02 hw wallet firmware and BitBoxApp wallet to verify that the protocol also works well in practice.= The actual scheme used in those implementations is a generalized sign-to-contract scheme, where the final nonce is computed as `k' =3D k += H(k*G, n)` instead of `k'=3Dk+n`, but otherwise it works mostly the same for the anti nonce covert channel protocol. I suggest to use this scheme in PSBT as well. > We can either use proprietary fields [4] or define key-value pairs and = add > them to the BIP-174. Depends if anyone else is interested in using this= > protocol or not. I'd definitely be interested in seeing widespread support for this, and standardizing it would help with that. With PSBT used with an air-gapped signer, there is increased danger in implementing the protocol wrongly by relying on the contents of the PSBT alone in the final verification step of a signature. The PSBT must be verified carefully against state stored by the host for the PSBT. Otherwise the signer can for example change or pre-fill the relevant NONCE fields and leak the private keys anyway. Is there a current best practice for how a PSBT can be identified by the host to store/retrieve the state? Are there other examples in PSBT where the host can't trust the contents of the PSBT the signer returns (except of course for the parts the user can verify themselves, like recipients, amounts, etc.)? In any case, guidelines or conventions on how to avoid the pitfalls would be good. Best, Marko --------------49506797E3AF558C692BD907 Content-Type: application/pgp-keys; name="0x67A2B160F74DB275.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0x67A2B160F74DB275.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFykyRABEADKl77HiQdiSp+F01Je5IPynLe93woyfKUoEVQQFvgjfFd2ZnYB 1mXtV3X6Y2tEKCaVilw73mCfCJEu5AGGddN3mEnkDygHB70ZGOvK1KHzA9SrQRi+ M/qgN0e2eDFxLOgZVjexa4VxNA+bRomg/eOeSq4lDWM+Sxk70aPlLUzG2U6ww7Qc G3gam0/qyOKeIYqHiPnlj2MWDD03DwTE6wrim/SQODRGyFjgpBQiJoxzaTzG+uLr 3GI/7wmpTd/zuk6o9ixg9n1xfqzcStoWmiv5szfVsvej77LS6cb1aB1VvvjgcYEz Bp3ZDafg+INU9PcePNYpoJCy4riqv6573allnN3SGLBkAmtyJJjsDDKMy9Ql5T1s QSYnQd9wFk9NPf/pW4gIeXEGi+tQ/u+9PdP5Slp67gEQqYI3rvUl1CnKDYgcayCj cyl9c7ScstKoODsoC80Fxy20IdZsfdd5Nd0+Kf6YpR1xTDy4x12/UL+8+DTx2wtU qjwkW3gLvzcn9Vr1fqAgdFWe85830wj5Uxbpvlb+SJbSXNXzzRAL2XwOk21qKtug DJ9sqTsiVFxjd2z8oiZ/EhqR5bePdSwrHVsTQUX77XV2WVSOm7fMtWfeoEUz0cN4 9LqYNK02pFNQwZqJf86dI1AKseXQ4w7NeuhPH4F74/RQkl7g3J3kw0WJkwARAQAB tCRNYXJrbyBCZW5jdW4gPG1iZW5jdW4rcGdwQGdtYWlsLmNvbT6JAk4EEwEKADgW IQQiYOSCiIgsdq+qMZ1norFg902ydQUCXKTJEAIbAwULCQgHAwUVCgkICwUWAgMB AAIeAQIXgAAKCRBnorFg902ydcVTEADCl9VzrFoLkhI/KX0J2QDrZV7eVcbLPGMI ZYpsVl+VAga3Zw9Gpb8cbn73b5yWp2cYrdgcFOrz4EZPuC4SazIKf77z7EF01xQc k27PWm3WV7cD8+knldYJUiw9jv5M8162ns5li0DlVFHGFvCWMSDnPU53fu0JelsQ 9qFnohKT2/3Tn5C+YgXJaIidKhc82/Tq3VL6b3jgJQPCRsDLcx9IpXUb2OBIVTwc lmwDGmtRQHYIgOR7VD+RM6cmmpsudDMCre2L+GbxrdPWc5HRJm7Iq0WEN2mGuTg0 nxuKOoVaKBHs3zFJJPBuSP9hAS0iolUTG8oiDAFYI6keOO/CJHIEBj1ruDWwk939 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 IiQHBKFJh/FP30Hlk+t5MC+zan9rytKnukWHxFsvbNMLxgAIWEndQSP/uu5Cw8VJ eMNlzojs5LsaqraOqsMnqljkMqIHYpN3o0ZSEo4PicR3vKUW0uNoB/6hGt/mZqmJ +GsfH7IThsCpr2IGH4SDDtyOO7IT0FcANx49gnazjC7e6fa8WVUoYI5+rY5eONbj oxVUJc4EHifgd4mxA0RhFzBDYHtXpH4ifmHQeyeVX4Ch/CuEcNOQ+k81LZgT5TUc RxNNHJJZAxo1xPIFIkLk9uo/Rx7z5PUag+VEq+qjx5WuQmg5R9udDkRIq9htbBWH iQJqBBMBCABUFiEEk4ai+y2p0NMfrwgYwMB2Ey/6dpUFAl4OIk02Gmh0dHBzOi8v am9uYXRoYW5jcm9zcy5jb20vQzBDMDc2MTMyRkZBNzY5NS5wb2xpY3kudHh0AAoJ EMDAdhMv+naVW4QP/2/gC1cMxC8r7E9nPnIFlv/W9CxhBZjuwW+UeDoANeN6BC9J CJxMJwHPOwvFohSh8FKF5MBuOcveR7pKmXRddsczJ1bb1yMf0RwC2+9G7udvqu74 AsM1tNNRXLIM3i2bdz+Yze6D90O7FBOTpGKOPPG0UidO6hdQ5ilz8Q/e8EI909I6 a6KzXqC8O9X44e9WAP4OwLqis2y22FykaOmGzH9xXF0LF934aLhbxnf4B1Gh8H5I ih5bzJtThXr/U0yezbiQkYq1inlNnSrzo/sw6Yb3TN+8mkO3q/1vixNLkx3JGUhy AEb5gui1mMpIMROAQKGNCbY//7iEbqL6HHU8jdI9EUmobwdqfpTXgXmdVajAHylt MkMiZrwvK/nXli9XBrNwrBFUeLmrmBOf2h2x3odJ0M97kM5I9Str3ofKZnEN4ITj cy7XWBXkWdPLj1uS2jbREFPIoXfSPYrYOC5Wv2oQbRJzsQ9yePIJfkTpdJckCTxX KacWt8+/WPingH85yBZ/+P6s/+h+Bu4CnlAXVtsy3WLngqaHE73cDjYFSHUVeWLj IyeWXxNkVgz3I7dXIYMToSkRf24o12KZHmWbikvrAMzN11f732sgNGS5+bT7YQEg kprW1tBDQXOC1jfR1ljfpaU6SpQkyMfpZ2wjQYtLidGndoMkbO1o5gzRLpOBuQIN BFykzAABEADRk7lGp678clcOb/PFefNtquu8j2m279IgtimBJf7TrynqmHajkL4K yO4k1eifCD47lzdxSJ/MJoKS2kyuDU6gvVlNMy98HbchanzwmR3ZxLzsld0StClT JqxPPFAEnaeKbYbeQ1cwVPVDCCXthlETwEdN1sSt5eLoNWBfeKpVaNNXeYc0imVY JXZs1PK4tPV3AMUB9oL/lv0qqOAyHhZNMNCTUqeMF9CEwAsXbxFZKDKEjPoXgYGI oDxs/5Z4ZW5gxLdyhFiPN0Gu+dFXKrOjDIe6HNWOFz4yfhVmgg/LvQ7/wWlqrAsh 7eLuccfvAqrarwvwZCoSwWeEUv2PNwq2dYMAwn9gUrxJmaZAEAb50p2I3+zmnSp9 B1BLCSKHwOneYRNBUskbjhHJcoGchnO8o8mplYGFnyUjRA2TSUGydm1iSHYSKLMr QZY0ABl7pTGm4xL1AOAXa2dTW0nzDMQGdu3wtN4yfzIgZtbM2cBVy7hECevmkL8u qGAFWPGiGIOfOxrHv48dBbcY944OIqmwYMHGmVn95+DAgCtpBIMCmbwnn5VhBScP efeAHcaMQUrBVqyB3hazsK2PnuiiSMRkdSKoORNck6XV+1qjoXRc/r9CVDkziNqA cQ6NecJ1QjZQ//07RFNslpX1J7qaXu1ESkSbqM9aRNc6T0Puder3/wARAQABiQRy BBgBCgAmFiEEImDkgoiILHavqjGdZ6KxYPdNsnUFAlykzAACGwIFCQPCZwACQAkQ Z6KxYPdNsnXBdCAEGQEKAB0WIQQtiHaBCrCS5FHcqJSARTiSjDfq6AUCXKTMAAAK CRCARTiSjDfq6BwED/4oFrXq/vfpVLlQmciYtIwHK84A8VBSbzmRCIbqwBNCILRE 32vhf1NzmcYI2PgjNnFr9vmuWax8s6l1bjSv2nO3lNcu4eRTejU4zAkMh6OebYFv uCtILbsgJ6O7K81xd7Ki4HT36DzAdO+KUTZbH+dE8l75IgoaZUmvP9db90BOM+6k mJTu9z5kgkP8kRkVHYXCG9/6/q5E7zOkPU5LDQOORPB/scANNJt54k5VXbilpU4d 5zBmvPdVq11dMeTZlfunVl8noQvx0DsazdXcHyCANO9KoOygcrLlIgkm4qrCZRw2 e9R38PSQEi66iFUYatqRSD0IDx7YHtr2IpdcQ37PjwmHy8TSqcFsEie9szwRd0ju jcxNHxQt+FB0h2AWyn4pbGelXBnxGeepBq9WYHbDIx+HHh1coHybIG1hlqwzESil OVYBZ6LfNq5jgP7ZPygjB9lFdsuiUaVVMjek3NrmgzgqU2RZV3jB9qQgVqEKgIkB yG0HSRhgj5QjjiOe2KLpD5xhFEBaQNn4YvlS/7yfsMfS9yMw1J2DoMP0vCXOKsF0 R0JiwWymEwhIyJQPhBSDkvt8VYIwrjMYxK4Bm21GsDUrJ9bqEOwIYPvQb9tvwLzl pdj4tDDaI8sahA4xa0FzVfleRLvoAXK0wl0jzLAuomBU1m+LKk0sJ09+4/PsOyj0 EAC3Z3NWNxpdeQG9Fxhzwt14iH8bOX28uLkPzfsH4NUPILdjeRVx1YhHAJVX/jV3 Lf1sJeDtmFZXza0k064tK6NSHIyINMlFKLepuLeMaH9vvQ5p7FkF4ja8NClAlIq7 op6eMyACffE52T4Q8hnn0l2k1ivxGQcFbtMGeHDfVF0XCpDjC+hQWcwanrFTgBES gzZObcy+fv8lhcATdgLN23WNgvpKgVr0uTBRM61reMEL9sOpgWQlOdx9RWgp2HGt /RgMRFM5AKsYPoRH4k+G4ceWgGPtmsBTV3iEOTdTdQxMsi2lWCqhnI8vMF3HUnjs L2wXHZ47Dh7Up4QMhhAhZxKSpyI7Ho1165Jvtz7KyqYbbXBV2O9CecV/1cndI6fF aB6fTcS/eY+7C8aNyKUfX1TUfoSzEUaZDLMhf47d8zw1SHd3u8Js9KpgnfZ2kOer jagXlvU8JwNpjlusLe9omgcWzirtGc94EaYjWZqTYbEVkXSHiFMaqve0A53IDlFT P9cTGhTyNsqlYuaaD5FzcuLdKNmxqjTatd9zqtTHTv+gRq6Sc6jr6yf3IHEejEni 2x72F23tR7C5mfpEEL4mtTtaCK4AUgvOMcwNOQQFOR6PedHBxDQ4WDFLtxuB9Mvj NpW6VNloJp3qyLAwQmMdfWF2GafkZO8RiWHINNZxaC1AnrkCDQRcpMz8ARAAvUfK 6kyj7Zwa0x3qSjavXqOqSF3jyaEkC8kRXII5gfta23+d6CQqpiiu0u3ppTfWYEtK pv26MQ9kZfAPmZMuMDeJxm5vP0HRwyQorsS9DTL9tB0f+4ryCzIlMEXc55q+tX4y oVNp/wTaM/ASOQzsa2AMhjMUESRBjUz63Gtm8L2q7mv8RB9FVYtom7KD5LNIMM0s WQB4BaLDKy7o7GVQTdUrozes/wXQxdxol0tyDeKuYOl99JXISjTf18vS4JDT2q7o 5hyhPo8XMP/HWLaqLHuQtgN+R6yaRLeyffGP4wQkhYwnIDsdlTfCXsfGvoL+HjOA lwiMhKOnzKhr0DPJacnAfItQKyg5pCPNr3jJQGLKV0uVpWbVQBp8egal/ibBGIGi EmOUBvqq5ywfq7UIbmz2GbQB50xfEoMn36kz1EzR6dUFJqsXrpUbubtFTDiu1wbC J+hb6bmg2oxKFAz00bMkCG7AkGtgjD/3/H2gfl69aGTb8cbD6B6feuQ6qNDtEQ5K 4M8w33+IninFs4YQ3+hNstiWDjHoYLy1Nv5ThFvJIN0Qlw8wOj7Sho1IbAiRBVWN 4YjZnhE2KyKxh5JR5zi3Rw37WrZiS728y4erMRBZPX/UNOWroQKELMQ9RMyOkZ7X N3LZ4qEOuYz6rjiJT3qK8C68/UfTzGnKFhlVQTcAEQEAAYkCPAQYAQoAJhYhBCJg 5IKIiCx2r6oxnWeisWD3TbJ1BQJcpMz8AhsMBQkDwmcAAAoJEGeisWD3TbJ19lkP /3F3qLgZo5FGW9B0t2HOgQYJrTRryFN+7H3H1b3RPiI/E90lT5oCcXx0d5Uf3fST 08WFe1MoPmR0nTzTozr/7FyVV00ysQpaD2iDFIiqavKsAJVN8ttpCG42yLbeen1i xYLVCp6mfiwu8qw9gzgHcnx/X8SOZvAs4cPdVpqUjJyCRFaC0Tf1IbyeXvA+Fbvl Znzuk0GazAkh9z6doALAWLNrycsKcGVS0UObsHSC48NT1/ijP0v7D7oUxi7vlqF6 oXFXeYPosBQ3ySOZMxF5lltXYaKQApRmtOAE3SlPTpsagB5NLLQv284KeGu+P4Tr O6zv6iYpKrCF82v8XxBYT7g3T3edbeU/yVxudctLatgHcJsoKv6LLTbgRmi6mpxu 1dDv6WZmGpVNTRXU2RV9scN0IQctiqnAQkrr9v8ME/KrqHgu0xqRRcUpp2RcKFhp BfTrMiXrLv3pDQVkSsnkgLWwaD/3ZJaSOaKgUzmmdXd5m2wiXeS6cxFZvR40Mrn6 vRKK0h3AvL60Ka7V+GDAXD1CyAUxsza+ItIuVD+3Eqyr8rZ1N/hMHdoV1RSZyWCl JnuVaT9PvdSYOpJP4XY88Q5eokpNik1/b6WLV0AhlnAwCsGxQQ4T2+bwaO5aaZTy vjv5MlbkLgMJqzM7ZSixrd8PjDjoaxmx9ueAfpIy2Rzu =3D7iU3 -----END PGP PUBLIC KEY BLOCK----- --------------49506797E3AF558C692BD907--