Today I decided to analyze a paper discussing attacks against the privacy of the lightning network.

The paper is here: https://arxiv.org/pdf/2003.12470 and it is called “An Empirical Analysis of Privacy in the Lightning Network.”

It analyzes a number of attacks on LN privacy, including one I found particularly interesting, the discussion of which contains this sentence: “We thus developed a tracing heuristic, which follows the “peeling chain” initiated at the opening and closing of public channels to identify any associated private channels.” (page 6)

The Peeling Attack (page 6)

The peeling attack is designed to identify unannounced channels on the lightning network. As part of the attack (the name for which I made up), they identified all outputs on the blockchain that could feasibly be channel opening transactions on the lightning network, and then checked how those outputs were spent.

Some of them were “channel closure” transactions, confirmed by this method: they observed that the transaction sent money to a lightning node who had public channels, and they confirmed *that* by observing that the recipient *spent* the money to open a “public” channel, which showed up in the public channel graph. Since they identified channel closure transactions of a channel that was not announced on the public graph, they knew it must be an unannounced channel.

A particularly poignant sentence is this one: “Out of the 27,183 transactions we identified as representing the opening of private channels, we were able to identify both participants in 2,035 (7.5%), one participant in 21,557 (79.3%), and no participants in 3,591 (13.2%).”

By identifying many unannounced channels via their opening and closing transactions, they could get the total capacity of those channels, as well as the “final” balance of both parties when the channel closed.

What are the weaknesses of this attack? Some are: it only finds unannounced channels if they are in a peel chain, that is, a series of transactions that keep opening and closing channels using a particular utxo and its change; it does not identify unannounced channels that are not part of a peel chain; it does not get anyone’s channel balance while the channel is open, only its total channel capacity; when it identified a channel closure, it only learned the “final” balance of the two nodes, not their transaction history.

The Targeted Probing Attack (page 8)

Regarding balances, they also have an attack for guessing the internal balances of an individual announced channel, though the attack has weaknesses. The attack is discussed in section 4, page 8 of the paper. It’s similar to Rene Pickhardt’s channel probing attack, but I will dub the new method the “targeted probing attack,” as opposed to Rene’s attack, which I dub the “dragnet probing attack.”

The targeted probing attack requires identifying a channel, which they call B -> C, where B and C are lightning nodes and the arrow is the channel between them. Then the attacker must open two “attacker” channels (the dragnet method requires only one channel), one with B and another with C. Then the attacker sends a series of payment probes, such that their channel with B is always the “from” channel and their channel with C is always the “to” channel. By only having those two channels, they know the payment probe must pass through B and C.

If the payment makes it to the destination node, then they infer that the capacity of B -> C is split up in such a way that B has at least that much money on his side of the channel; then they cancel the payment and try again with a higher amount, and keep doing they reach the channel’s capacity or the payment fails. (That’s a bit simplified; they optimize the number of transactions they must try by doing a binary search, but whatever.) At that point, they infer that the internal balance of node B in the channel B -> C is just below whatever amount failed (if there was a failure), or is just the entire capacity of the channel (if there never was a failure), and the balance of C is whatever’s leftover of the capacity of the channel.

They admit that the targeted probing attack has a weakness: “[In] the case in which there is more than one intermediate channel between the two attacker nodes…the above method identifies the bottleneck balance in the entire path, rather than the balance of an individual channel.” (page 9) Consequently, B and C may have channels between them that the attackers don’t know about (e.g. unannounced channels that weren’t in a peel chain), and thus this attack does not for-sure discern the internal balance of B for a particular channel, it only finds that he has *at most* whatever amount they got through. E.g. if they got a payment of $500 through, maybe B only had $200 on his side of the B -> C channel they were probing, but he had $300 or more in another channel with C that they didn’t know about, and routed the remainder through that channel.

The AOH Attack (Assume One Hop - page 10)

The paper discusses an attack for guessing the senders and recipients in a lightning payment, in section 5, “Path Discovery,” on page 10. They describe their attack thusly: “The strategy of our…adversary is simple: they always guess that their immediate predecessor is the sender. … Similarly, they always guess that their immediate successor is the recipient.”

Their attack relies on the assumption that most nodes will try to pass their payment through the shortest possible route to the destination, and that this means most payments will actually only have one hop: “the route to the destination in LN is constructed solely by the payment sender. All clients generally aim to find the shortest path in the network, meaning the path with the lowest amount of fees.” (page 11)

They simulate this attack in section 5.1 (page 11), where they say they took “snapshots” of the lightning network’s public nodes and channels (specifically, they say their methodology for getting the snapshot is outlined in section 3.1 on page 5, and that section only mentioned public nodes and channels – unannounced ones are only discussed later, in section 3.2). Then they assigned a routing algorithm semi-randomly to each node on this network, where the algorithms were re-written versions of the routing algorithms used by LND, CLN, and Eclair. Then they pretended these nodes sent simulated payments to one another at random, and checked how often a routing node was right if a payment passed through it and it guessed that the node before it was the sender and the node after it was the recipient. They were correct 56.65% of the time.

What are the weaknesses of this attack? Well, they were *wrong* about a single hop 43.35% of the time, so that’s already pretty damaging to their case. But also, they were working on a constrained network: they completely excluded private nodes as possible senders, and it is a lot easier to guess the sender/recipient when your simulator excludes, right at the start, a huge number of nodes that could otherwise be the sender/recipient.

Reply to this note

Please Login to reply.

Discussion

Forgot to finish the last part:

Moreover, the paper was released in 2021, and some of its assumptions are no longer true, particularly these two: “the route to the destination in LN is constructed solely by the payment sender [and all] clients generally aim to find the shortest path in the network.” (page 11)

Since that time, rendezvous routing has become very common: the latest versions of lnd do it via the Blinded Routes flag, CLN and Eclair do it via bolt12, and anyone with a “legacy” lightning wallet can do it via lnproxy. Thanks to rendezvous routing, there are many cases today where the sender no longer picks the shortest path to the destination; indeed, when rendezvous routing is used, he does not *know* the destination. So the attacks outlined in this paper simply wouldn’t work today in many cases, due to the assumptions being wrong.

I read this fascinating description and realize I don’t know shit about the ⚡️ network 😂. Easy to stay humble in this F’n realm….

nostr:nevent1qqspqukm7tfkcl0mkzrr6jme0p58wyygv0ztc90udpm3xu5lw2wl8wgpz3mhxue69uhkummnw3ezummcw3ezuer9wcw3pr2x

This needs a tldr

I had an AI generate a TLDR:

The essay analyzes a paper on privacy attacks against the Lightning Network (LN), highlighting three key attacks:

- Peeling Attack: Identifies unannounced channels by tracking "peeling chains" of channel openings and closures. It can find unannounced channels but only if they are part of a peel chain, and it doesn't reveal balances during the channel's operation.

- Targeted Probing Attack: Guesses the internal balances of some channels by sending payment probes through them. However, within the channel, it only determines an upper bound on one party's balance, a lower bound on the other's, and was not tried on unannounced channels.

- AOH (Assume One Hop) Attack: Assumes that most payments have only one hop, guessing the sender and recipient based on this. The attack guessed correctly 56% of the time -- little better than a coinflip -- on a simulated network that is smaller than the real LN, with no unannounced channels. It is also less effective in modern LN, where rendezvous routing is common, and the sender doesn't always choose the shortest path.

The paper's assumptions, such as the prevalence of shortest-path routing, are outdated, making some attacks less relevant today.

Thank you for the summary. Very interesting

Can the transactions in a peel chain be found to belong together because there is some kind of address reuse? I can imagine that you can see the funds going into and out of a multisig address, but after that, how would I see the chain continuing?

You can find a peel chain like this:

(1) Use a lightning explorer (e.g. 1ml.com) to find lightning nodes that frequently create both types of channels, public and unannounced channels, e.g. LSPs like Acinq and LNBig do both.

(2) Find one of the transactions where they open a public channel. This is easy to do because public channels are announced in LN gossip, including their funding transaction, so you can literally just grab it from gossip and look it up in a block explorer.

(3) The funding transaction is likely to have two outputs: a public channel and some change. Follow the change.

(4) The LSP is likely to use the same utxos for both types of channels -- they'll create channel A, keep the change, use A's change to fund channel B, keep the change, use B's change to fund channel C, etc., and occasionally add more on-chain funds when the change output gets too small.

(5) That's a peel chain, and it has an identifiable fingerprint. You can identify the change easily because it gets spent again pretty soon; whatever's not change in any of those transactions is a channel. The ones that are announced in LN gossip are public channels; the rest are unannounced channels.

Understood. Thanks for explaining

hmm, the peeling attack might help to better estimate the real capacity of the whole lightning network 🤔

Yes. Taproot channels help with anonymity of unpublished channels. Not much helps if the channel breaks, but that's an outlier.

Channel probing is made a little harder by the Oakland Protocol, which is still just a proposal.

Fees are generally so cheap that more private routing modes are practical, if we wanted to, but this might be obviated by the increasing complexity of routing.

> Channel probing is made a little harder by the Oakland Protocol, which is still just a proposal.

We implemented it! (Tho now CLN often fails to open channels to me https://github.com/ElementsProject/lightning/issues/4873 )

I've bumped this and assigned it to me, thanks!

Is there a goos tutorial on the best practise for privacy on ln? maybe a good recap made by expert people like you and nostr:nprofile1qqs0zuj4s6jq9sr2ajqc69rc53d25rwpd3afcjrfm97r2qek69hcuscpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qy2hwumn8ghj7mn0wd68ytn00p68ytnyv4mz7mwrf0g could help many to have a good privacy setup.Many people could be missing some steps also if they are good tech guys.

Any suggestion is super appreciated!