Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1YHquk-0000UK-ON for bitcoin-development@lists.sourceforge.net; Sun, 01 Feb 2015 09:33:58 +0000 X-ACL-Warn: Received: from wp059.webpack.hosteurope.de ([80.237.132.66]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1YHqui-00084l-VL for bitcoin-development@lists.sourceforge.net; Sun, 01 Feb 2015 09:33:58 +0000 Received: from [37.143.74.116] (helo=[192.168.0.100]); authenticated by wp059.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) id 1YHquc-0005ai-Ao; Sun, 01 Feb 2015 10:33:50 +0100 From: Tamas Blummer Content-Type: multipart/signed; boundary="Apple-Mail=_32EFF217-B018-44CF-A0E9-1DC7C742830C"; protocol="application/pgp-signature"; micalg=pgp-sha512 Message-Id: Date: Sun, 1 Feb 2015 10:33:48 +0100 To: Bitcoin Dev Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) X-Mailer: Apple Mail (2.1878.6) X-bounce-key: webpack.hosteurope.de; tamas@bitsofproof.com; 1422783237; 7c51f473; X-Spam-Score: 1.0 (+) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.237.132.66 listed in list.dnswl.org] 1.0 HTML_MESSAGE BODY: HTML included in message X-Headers-End: 1YHqui-00084l-VL Subject: [Bitcoin-development] var_int ambiguous serialization consequences 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: Sun, 01 Feb 2015 09:33:58 -0000 --Apple-Mail=_32EFF217-B018-44CF-A0E9-1DC7C742830C Content-Type: multipart/alternative; boundary="Apple-Mail=_EC593710-1FB9-4AAB-92F0-A44D0068DF52" --Apple-Mail=_EC593710-1FB9-4AAB-92F0-A44D0068DF52 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii I wonder of consequences if var_int is used in its longer than necessary = forms (e.g encoding 1 as 0xfd0100 instead of 0x01) This is already of interest if applying size limit to a block, since = transaction count is var_int but is not part of the hashed header or the = merkle tree. It could also be used to create variants of the same transaction message = by altered representation of txIn and txout counts, that would remain = valid provided signatures validate with the shortest form, as that is = created while re-serializing for signature hashing. An implementation = that holds mempool by raw message hashes could be tricked to believe = that a modified encoded version of the same transaction is a real double = spend. One could also mine a valid block with transactions that have a = different hash if regularly parsed and re-serialized. An SPV client = could be confused by such a transaction as it was present in the merkle = tree proof with a different hash than it gets for the tx with its own = serialization or from the raw message. Tamas Blummer Bits of Proof --Apple-Mail=_EC593710-1FB9-4AAB-92F0-A44D0068DF52 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
I = wonder of consequences if var_int is used in its longer than necessary = forms (e.g encoding 1 as 0xfd0100 instead of = 0x01)

This is already of interest if applying = size limit to a block, since transaction count is var_int but is not = part of the hashed header or the merkle = tree.

It could also be used to create variants = of the same transaction message by altered representation of txIn and = txout counts, that would remain valid provided signatures validate with = the shortest form, as that is created while re-serializing for signature = hashing. An implementation that holds mempool by raw message hashes = could be tricked to believe that a modified encoded version of the same = transaction is a real double spend. One could also mine a valid block = with transactions that have a different hash if regularly parsed and = re-serialized. An SPV client could be confused by such a transaction as = it was present in the merkle tree proof with a different hash than it = gets for the tx with its own serialization or from the raw = message.

Tamas = Blummer
Bits of Proof

= --Apple-Mail=_EC593710-1FB9-4AAB-92F0-A44D0068DF52-- --Apple-Mail=_32EFF217-B018-44CF-A0E9-1DC7C742830C 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----- Comment: GPGTools - https://gpgtools.org iQEcBAEBCgAGBQJUzfL8AAoJEPZykcUXcTkcwTAH/1ZnaqjpmLGGtEim0vLPb9D8 b9COVLIoEJ7VKiLIQ8+sSTZcuo6W0k9BCoZbWdZi/NN3Yag2QSzD1AD6bvLhHAuL F600XHuHkFtpl2k2a2zNfYuGM7zn71eChTwiJwld6jEjqsILZi1O7ZMgOWRbEJzm 3HS9tRPmX9pW4CbQZNw38+kKtpDc2WraN66HWz89oW5vRn4EKV6QLbRT4ggDyrvW mLBXn2TV/JQ0qQfB97Q8hmxl6FgOtNrpjAIqcNt+7Pe8A3wshi3SiJYhTTa25vaq RZTZpQKhyOxJy9zF1baLZOPywbSj3CyMouNoohtcBhGBjHIBKtote0I8RWrtA6M= =EoXH -----END PGP SIGNATURE----- --Apple-Mail=_32EFF217-B018-44CF-A0E9-1DC7C742830C--