From 74c144bbf44afd91d011f6005b9be4779e78e20d Mon Sep 17 00:00:00 2001 From: "David A. Harding" Date: Tue, 7 Feb 2023 20:59:16 -1000 Subject: [PATCH] CH04::bech32 and bech32m: add new sections - Briefly mention segwit and the need for new addresses. Mention that getting wallets to a new base58check version would probably be only a little less work than upgrading to an entirely new address format. Describe the problems with base58check and the solutions provide by bech32. Illustrate some of the problems and solutions. - Describe the bech32 length extension issue and provide an example. - Introduce bech32m as the solution to the lengith extension issue. - Provide examples using the bech32m reference library for Python for encoding and decoding a bech32m address (mentioning the backwards compatibility with bech32 addresses). - Ask wallet authors to ensure they support forward compatibility with future segwit versions. --- ch04.asciidoc | 389 ++++++++++++++++++++++++++++++ images/bech32-qrcode-uc-lc.png | Bin 0 -> 40899 bytes images/bech32m-typo-detection.png | Bin 0 -> 23294 bytes 3 files changed, 389 insertions(+) create mode 100644 images/bech32-qrcode-uc-lc.png create mode 100644 images/bech32m-typo-detection.png diff --git a/ch04.asciidoc b/ch04.asciidoc index fcc671b6..926af919 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -1029,6 +1029,395 @@ are only used in https://transactionfee.info/charts/payments-spending-segwit/[about 10% of transactions]. Legacy addresses were supplanted by the bech32 family of addresses. +//FIXME: collision attacks + +=== Bech32 addresses + +In 2017, the Bitcoin protocol was upgraded to prevent transaction +identifiers (txids) from being changed without the consent of a spending +user (or a quorum of signers when multiple signatures are required). +The upgrade, called _segregated witness_ (or _segwit_ for short), also +provided additional capacity for transaction data in blocks and several +other benefits. However, users wanting direct access to segwit's +benefits had to accept payments to variations on the legacy P2PKH and +P2SH scripts. + +As mentioned in <>, one of the advantages of the P2SH output type +was that a spender (such as Alice) didn't need to know the details of +the script the receiver (such as Bob) used. The segwit upgrade was +designed to be compatible with this mechanism, allowing users to +immediately begin accessing many of the new benefits by using a P2SH +address. But for Bob to gain access to all of the benefits, he would +need Alice's wallet to pay him using a different type of script. That +would require Alice's wallet to upgrade to supporting the new scripts. + +At first, Bitcoin developers proposed BIP142, which would continue using +Base58Check with a new version byte, similar to the P2SH upgrade. But +getting all wallets to upgrade to new scripts with a new Base58Check +version was expected to require almost as much work as getting them to +upgrade to an entirely new address format, so several Bitcoin +contributors set out to design the best possible address format. They +identified several problems with Base58Check: + +- Its mixed case presentation made it inconvenient to read aloud or + transcribe. Try reading one of the legacy addresses in this chapter + to a friend who you have transcribe it. Notice how you have to prefix + every letter with the words "uppercase" and "lowercase". Also note + when you review their writing that the uppercase and lowercase + versions of some letters can look similar in many people's + handwriting. + +- It can detect errors, but it can't help users correct those errors. + For example, if you accidentally transpose two characters when manually + entering an address, your wallet will almost certainly warn that a + mistake exists, but it won't help you figure out where the error is + located. It might take you several frustrating minutes to eventually + discover the mistake. + +- A mixed case alphabet also requires extra space to encode in QR code + images, which are commonly used to share addresses and invoices + between wallets. That extra space means QR codes need to be larger at + the same resolution or they become harder to scan quickly. + +- It requires every spender wallet upgrade to support new protocol + features like P2SH and segwit. Although the upgrades themselves might + not require much code, experience shows that many wallet authors are + busy with other work and can sometimes delay upgrading for years. + This adversely affects everyone who wants to use the new features. + +The developers working on an address format for segwit found solutions +for each of these problems in a new address format called +bech32 (pronounced with a soft "ch", as in "besh thirty-two"). The +"bech" stands for BCH, the initials of the three individuals who +discovered the cyclic code in 1959 and 1960 upon which bech32 is based. +The "32" stands for the number of characters in the bech32 alphabet +(similar to the 58 in Base58Check). + +- Bech32 uses only numbers and a single case of letters (preferably + rendered in lowercase). Despite its alphabet being almost half the + size of the Base58Check alphabet, bech32 addresses are only slightly + longer than the longest equivalent P2PKH legacy addresses. + +- Bech32 can both detect and help correct errors. In an address of an + expected length, it is mathematically guaranteed to detect any error + affecting four characters or less; that's more reliable than + Base58Check. For longer errors, it will fail to detect them less than + one time in a billion, which is roughly the same reliability as + Base58Check. Even better, for an address typed with just a few + errors, it can tell the user where those errors occurred, allowing them + quickly correct minor transcription mistakes. See <> + for an example of an address entered with errors. + +[[bech32_typo_detection]] +.Bech32 typo detection +==== +Address: + bc1p9nh05ha8wrljf7ru236aw**n**4t2x0d5ctkkywm**v**9sclnm4t0av2vgs4k3au7 + +Detected errors shown in bold. Generated using the +https://bitcoin.sipa.be/bech32/demo/demo.html[bech32 address decoder demo]. +==== + +- Bech32 is preferably written with only lowercase characters, but those + lowercase characters can be replaced with uppercase characters before + encoding an address in a QR code. This allows the use of a special QR + encoding mode that uses less space. Notice the difference in size and + complexity of the two QR codes for the same address in + <>. + +[[bech32_qrcode_uc_lc]] +.The same bech32 address QR encoded in uppercase and lowercase +image::images/bech32-qrcode-uc-lc.png["The same bech32 address QR encoded in uppercase and lowercase"] + +- Bech32 takes advantage of an upgrade mechanism designed as part of + segwit to make it possible for spender wallets to be able to pay + output types that aren't in use yet. The goal was to allow developers + to build a wallet today that allows spending to a bech32 address which + will work without changes even years from now when a later protocol + upgrade adds a new feature for users who receive bitcoins. It was + hoped that we might never again need to go through the system-wide + upgrade cycles necessary to allow people to fully use P2SH and segwit. + +==== Problems with bech32 addresses + +Bech32 addresses would have been a success in every area except for one +problem. The mathematical guarantees about their ability to detect +errors only apply if the length of the address you enter into a wallet +is the same length of the original address. If you add or remove any +characters during transcription, the guarantee doesn't apply and your +wallet may spend funds to a wrong address. However, even without the +guarantee, it was thought that it would be unlikely that a user adding +or removing characters would produce a string with a valid checksum. + +Unfortunately, the choice for one of the constants in the bech32 +algorithm just happened to make it very easy to add or remove the letter +"q" in the penultimate position of an address that ends with the letter +"p". In those cases, you can also add or remove the letter "q" multiple +times. This will be caught by the checksum some of the time, but it +will be missed far more often than the one-in-a-billion expectations for +bech32's substitution errors. + +.Extending the length of bech32 address without invalidating its checksum +==== +---- +Intended bech32 address: +bc1pqqqsq9txsqp + +Incorrect addresses with a valid checksum: +bc1pqqqsq9txsqqqqp +bc1pqqqsq9txsqqqqqqp +bc1pqqqsq9txsqqqqqqqqp +bc1pqqqsq9txsqqqqqqqqqp +bc1pqqqsq9txsqqqqqqqqqqqp +---- +==== +//from segwit_addr import * +// +//for foo in range(0,1000): +// addr = encode('bc', 1, foo.to_bytes(3,'big')) +// print(foo, addr) + + + +For the initial version of segwit (version 0), this wasn't a practical +concern. Only two valid lengths were defined for v0 segwit outputs: 22 +bytes and 34 bytes. Those correspond to bech32 addresses 42 characters +or 62 characters long, so someone would need to add or remove the letter "q" +from the penultimate position of a bech32 address 20 times in order to +send money to an invalid address without a wallet being able to detect +it. However, it would become a problem for users in the future if +a segwit-based upgrade were ever to be implemented. + +==== Bech32m + +Although bech32 worked well for segwit v0, developers didn't want to +unnecessarily constrain output sizes in later versions of segwit. +Without constraints, adding or removing a single "q" in a bech32 address +could result in a user accidentally sending their money to an +output that was either unspendable or spendable by anyone (allowing +those bitcoins to be taken by anyone). Developers exhaustively analyzed the bech32 +problem and found that changing a single constant in their algorithm +would eliminate the problem, ensuring that any insertion or deletion of +up to five characters will only fail to be detected less often than one +time in a billion. + +//https://gist.github.com/sipa/a9845b37c1b298a7301c33a04090b2eb + +The version of bech32 with a single different constant is known as +Bech32 Modified (bech32m). All of the characters in bech32 and bech32m +addresses for the same underlying data will be identical except for the +last six (the checksum). That means a wallet will need to know which +version is in use in order to validate the checksum, but both address +types contain an internal version byte that makes determining that easy. + +===== Encoding and Decoding bech32m addresses + +In this section, we'll look at the encoding and parsing rules for +bech32m Bitcoin addresses since they encompass the ability to parse +bech32 addresses and are the current recommended address format for +Bitcoin wallets. + +Bech32m addresses start with a Human Readable Part (HRP). There are +rules in BIP173 for creating your own HRPs, but for Bitcoin you only +need to know about the HRPs already chosen: + +.Bech32 HRPs for Bitcoin +[cols="1,1"] +|=== +| bc +| Bitcoin mainnet + +| tb +| Bitcoin testnet +|=== + +The HRP is followed by a separator, the number "1". Earlier proposals +for a protocol separator used a colon but some operating systems and +applications which allow a user to double click on a word to highlight +it for copy and pasting won't extend the highlighting to and past a +colon. A number ensured double-click highlighting would work with any +program that supports bech32m strings in general (which include other +numbers). The number "1" was chosen because bech32 strings don't +otherwise use it in order to prevent accidental transliteration between +the number "1" and the lowercase letter "l". + +The other part of a bech32m address is called the "data part". There +are three elements to this part: + +Witness version:: + A single byte which encodes as a single character + in a bech32m Bitcoin address immediately following the separator. + This letter represents the segwit version. The letter "q" is the + encoding of "0" for segwit v0, the initial version of segwit where + bech32 addresses were introduced. The letter "p" is the encoding of + "1" for segwit v1 (also called taproot) where bech32m began to be + used. There are seventeen possible versions of segwit and it's + required for Bitcoin that the first byte of a bech32m data part decode + to the number 0 through 16 (inclusive). + +Witness program:: + From 2 to 40 bytes. For segwit v0, this witness program + must be either 20 or 32 bytes; no other length is valid. For segwit + v1, the only defined length as of this writing is 32 bytes but other + lengths may be defined later. + +Checksum:: + Exactly 6 characters. This is created using a BCH code, a type of + error correction code (although for Bitcoin addresses, we'll see later + that it's essential to use the checksum only for error detection--not + correction). +//TODO + +Let's illustrate these rules by walking through an example of creating +bech32 and bech32m addresses. We'll use the +For all of the following examples, we'll use the +https://github.com/sipa/bech32/tree/master/ref[bech32m reference code +for Python]. + +Let's start by generating four output scripts, one for each of the +different segwit outputs in use at the time of publication, plus one for +a future segwit version that doesn't yet have a defined meaning. + +// bc1q9d3xa5gg45q2j39m9y32xzvygcgay4rgc6aaee +// 2b626ed108ad00a944bb2922a309844611d25468 +// +// bc1qvj9r9egtd7mu2gemy28kpf4zefq4ssqzdzzycj7zjhk4arpavfhsct5a3p +// 648a32e50b6fb7c5233b228f60a6a2ca4158400268844c4bc295ed5e8c3d626f +// +// bc1p9nh05ha8wrljf7ru236awm4t2x0d5ctkkywmu9sclnm4t0av2vgs4k3au7 +// 2ceefa5fa770ff24f87c5475d76eab519eda6176b11dbe1618fcf755bfac5311 +// +// bc1sqqqqkfw08p +// O_16 OP_PUSH2 0000 + +.Scripts for different types of segwit outputs +[cols="1,1"] +|=== +| P2WPKH +| OP_0 2b626ed108ad00a944bb2922a309844611d25468 + +| P2WSH +| OP_0 648a32e50b6fb7c5233b228f60a6a2ca4158400268844c4bc295ed5e8c3d626f + +| P2TR +| OP_1 2ceefa5fa770ff24f87c5475d76eab519eda6176b11dbe1618fcf755bfac5311 + +| Future Example +| OP_16 0000 +|=== + +For the P2WPKH output, the witness program contains a commitment constructed in exactly the same +way as the commitment for a P2PKH output seen in <>. A public key is passed into a SHA256 hash +function. The resultant 32 byte digest is then passed into a RIPEMD-160 +hash function. The digest of that function (the commitment) is placed +in the witness program. + +For the P2WSH output, we don't use the P2SH algorithm. Instead we take +the script, pass it into a SHA256 hash function, and use the 32-byte +digest of that function in the witness program. For P2SH, the SHA256 +digest was hashed again with RIPEMD-160, but that may not be secure in +some cases; for details, see <>. A result of +using SHA256 without RIPEMD160 is that P2WSH commitments are 32 bytes +(256 bits) instead 20 bytes (160 bits). + +For the Pay-to-Taproot (P2TR) output, the witness program is a point on +the secp256k1 curve. It may be a simple public key, but in most cases +it should be a public key that commits to some additional data. We'll +learn more about that commitment in <>. + +For the example of a future segwit version, we simply use the highest +possible segwit version number (16) and the smallest allowed witness +program (2 bytes) with a null value. + +Now that we know the version number and the witness program, we can +convert each of them into a bech32 address. Let's use the bech32m reference +library for Python to quickly generate those addresses, and then take a +deeper look at what's happening: + +---- +wget https://raw.githubusercontent.com/sipa/bech32/master/ref/python/segwit_addr.py +2023-01-30 11:59:10 (46.3 MB/s) - ‘segwit_addr.py’ saved [5022/5022] + +python +>>> from segwit_addr import * +>>> from binascii import unhexlify + +>>> help(encode) +encode(hrp, witver, witprog) + Encode a segwit address. + +>>> encode('bc', 0, unhexlify('2b626ed108ad00a944bb2922a309844611d25468')) +'bc1q9d3xa5gg45q2j39m9y32xzvygcgay4rgc6aaee' +>>> encode('bc', 0, unhexlify('648a32e50b6fb7c5233b228f60a6a2ca4158400268844c4bc295ed5e8c3d626f')) +'bc1qvj9r9egtd7mu2gemy28kpf4zefq4ssqzdzzycj7zjhk4arpavfhsct5a3p' +>>> encode('bc', 1, unhexlify('2ceefa5fa770ff24f87c5475d76eab519eda6176b11dbe1618fcf755bfac5311')) +'bc1p9nh05ha8wrljf7ru236awm4t2x0d5ctkkywmu9sclnm4t0av2vgs4k3au7' +>>> encode('bc', 16, unhexlify('0000')) +'bc1sqqqqkfw08p' +---- + +If we open the file +segwit_addr.py+ and look at what the code is doing, +the first thing we will notice +is the sole difference between bech32 (used for segwit v0) and bech32m +(used for later segwit versions) is the constant. + +---- +BECH32_CONSTANT = 1 +BECH32M_CONSTANT = 0x2bc830a3 +---- + +Next we notice the code produce the checksum. In the final step of the +checksum, the appropriate constant is merged into the value using an xor +operation. That single value is the only difference between bech32 and +bech32m. + +With the checksum created, each 5-bit character in the data part +(including the witness version, witness program, and checksum) is +converted to alphanumeric characters. + +For decoding back into a scriptPubKey, we work in reverse. First let's +use the reference library to decode two of our addresses: + +---- +>>> help(decode) +decode(hrp, addr) + Decode a segwit address. + +>>> _ = decode("bc", "bc1q9d3xa5gg45q2j39m9y32xzvygcgay4rgc6aaee"); _[0], bytes(_[1]).hex() +(0, '2b626ed108ad00a944bb2922a309844611d25468') +>>> _ = decode("bc", "bc1p9nh05ha8wrljf7ru236awm4t2x0d5ctkkywmu9sclnm4t0av2vgs4k3au7"); _[0], bytes(_[1]).hex() +(1, '2ceefa5fa770ff24f87c5475d76eab519eda6176b11dbe1618fcf755bfac5311') +---- + +We get back both the witness version and the witness program. Those can +be inserted into the template for our scriptPubKey: + +---- + +---- + +For example: + +---- +OP_0 2b626ed108ad00a944bb2922a309844611d25468 +OP_1 2ceefa5fa770ff24f87c5475d76eab519eda6176b11dbe1618fcf755bfac5311 +---- + +[WARNING] +==== +One +possible mistake here to be aware of is that a witness version of `0` is +for `OP_0`, which uses the byte 0x00--but a witness version of `1` uses +`OP_1`, which is byte 0x51. Witness versions `2` through `16` use 0x52 +through 0x60, respectively. +==== + +When implementing bech32m encoding or decoding, we very strongly +recommend that you use the test vectors provided in BIP350. We also ask +that you ensure your code passes the test vectors related to paying future segwit +versions that haven't been defined yet. This will help make your +software usable for many years to come even if you aren't able to add +support for new Bitcoin features as soon as they become available. ==== Key Formats diff --git a/images/bech32-qrcode-uc-lc.png b/images/bech32-qrcode-uc-lc.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a4db04d843e0ed9e44347c53ba7ec7361c0f29 GIT binary patch literal 40899 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 literal 0 HcmV?d00001 diff --git a/images/bech32m-typo-detection.png b/images/bech32m-typo-detection.png new file mode 100644 index 0000000000000000000000000000000000000000..7bacb5c9f442a960993fb1cad30ea16582f0a45a GIT binary patch literal 23294 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 L2I>{6)}j9gEO1nZ literal 0 HcmV?d00001