Hi Tony,
> The reason this is possible is because probing is a free operation on the
> Lightning Network after a channel is opened, the error reasons given are way
> too verbose, and currently channel IDs are based on UTXO's. Scid aliases may
> be the biggest benefit here, but the use of `unknown_next_peer` ,
> `invalid_onion_hmac`, `incorrect_cltv_expiry`, and `amount_below_minimum`
> have been the biggest helpers in exploiting channel privacy.
Can this be fixed by making error messages less verbose or reveal less
information?
> We should definitely migrate to alias scid's, and encourage every active
> unannounced channel holder to close, coinjoin, and reopen with an alias. But
> care should be given in the future when it comes to error reasons revealing
> information that is meant to be "private". Until this migration happens, it
> would be beneficial to stop being so specific about errors, this does not
> really seem to help end users anyways.
Alias SCID would be better for privacy as they allow a node to request a
channel by a random value instead of value derived from the on-chain
transaction. Are alias SCIDs necessary to fix it or error messages alone can
fix it?
I found these pull requests and assuming alias SCID are already implemented in
LDK/rust-lightning:
[https://github.com/lightningdevkit/rust-lightning/pull/1311/](https://github.com/lightningdevkit/rust-lightning/pull/1311/commits)
https://github.com/lightningdevkit/rust-lightning/pull/1351
> I'll be continuing with this probing project while the problem exists, and
> work on narrowing down the other channel partner and fixing efficiency bugs.
> I am publicizing the results as I go, so fair warning that if you have any
> unannounced channels that you assumed were private and need them to be, close
> them now on the off chance they get revealed. This could have always been
> happening already already by analytic firms, so I hope by publicizing this we
> are all on the same playing field. It is also beneficial to get a better
> estimate of the unknown size of the Lightning Network.
I love the research and thanks for sharing all the information. I am assuming
analytic firms would be using this already.
/dev/fd0
Sent with [Proton Mail](https://proton.me/) secure email.
------- Original Message -------
On Wednesday, June 8th, 2022 at 7:35 AM, Tony Giorgio via Lightning-dev
<[email protected]> wrote:
> Hi,
>
> For the past few months I have been working on an LDK probing project that
> searches for unannounced channels on the Lightning Network. For the past
> week, I have been probing on mainnet and squashing bugs / making
> optimizations.
>
> So far I have found near 445 unannounced channels totaling 1,076,077,750
> satoshi's locked across the 3 nodes I have probed, some with just a minimized
> set (~30,000) of probable channels based on "round payment amount" and "1 or
> 2 tx output" heuristics on P2WSH UTXO's. Most of them being on Aincq's node
> found with the minimized set, I've yet to run the complete set with them.
> There are about ~860,000 P2WSH UTXO's, about ~60,000 of which are public, so
> the upward limit of possible private channels is around ~800,000.
>
> The exact results are publicized here:
> https://github.com/BitcoinDevShop/hidden-lightning-network/blob/master/data/results/results.json
>
> The reason this is possible is because probing is a free operation on the
> Lightning Network after a channel is opened, the error reasons given are way
> too verbose, and currently channel IDs are based on UTXO's. Scid aliases may
> be the biggest benefit here, but the use of `unknown_next_peer` ,
> `invalid_onion_hmac`, `incorrect_cltv_expiry`, and `amount_below_minimum`
> have been the biggest helpers in exploiting channel privacy.
>
> By creating a probe guessing the Channel ID based on unspent p2wsh
> transactions, it's a `m * n` problem to probe the entire network, where `m`
> is utxos and `n` is nodes. Without these errors and instead something like
> `temporary_channel_failure` or a generic indistinguishable error, guessing a
> Channel ID would come down to an upwards of `m * n * n-1 * ~2000`, which
> would be each utxo with each pairing of nodes, each with about ~2000 cltv's
> to guess (numbers are as low as 7 to as high as ~2000). I threw the extra
> 2000 into the equation because even with `800,000 * 1 * 2000`, it gets much
> more time consuming to even probe a single node when we're already spending
> upwards of a day or so for near 1 million or 2 probes. Concurrent probing is
> possible, but starts to require more locked up liquidity.
>
> We should definitely migrate to alias scid's, and encourage every active
> unannounced channel holder to close, coinjoin, and reopen with an alias. But
> care should be given in the future when it comes to error reasons revealing
> information that is meant to be "private". Until this migration happens, it
> would be beneficial to stop being so specific about errors, this does not
> really seem to help end users anyways.
>
> I'll be continuing with this probing project while the problem exists, and
> work on narrowing down the other channel partner and fixing efficiency bugs.
> I am publicizing the results as I go, so fair warning that if you have any
> unannounced channels that you assumed were private and need them to be, close
> them now on the off chance they get revealed. This could have always been
> happening already already by analytic firms, so I hope by publicizing this we
> are all on the same playing field. It is also beneficial to get a better
> estimate of the unknown size of the Lightning Network.
>
> For more about this project and viewing the dataset, go to
> http://hiddenlightningnetwork.com
>
> Thanks,
> Tony
_______________________________________________
Lightning-dev mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev