Good morning Subhra, > Thank you for the clarification. Sorry for misinterpreting the paper of > anonymous multihop lock. A bit of rephrasing of what I exactly meant and > apologies for describing vaguely. Following your discussion on griefing > attack, it is clear the payer and payee wants to intentionally deprive > intermediate nodes, by colluding. However, by griefing (a misnomer for this > situation) I didn't mean exactly withholding the solution but something like > this: > Given S->A->B->C->D->E->F->R, S, B and F are controlled by the same adversary > and considering all the parties have completed the lock phase. Now R triggers > release phase and F gets x_r from R. However, F adds x_f to x_r forwards it > directly to B, doesn't complete signature with E and cancels the HTLC just > before the elapse of expiration time, E terminates its HTLC with D and so on. > B has x_c+x_d+x_e+x_f+x_r (shared by F and shared by S). It continues > normally completing payment with A and then S. I am not sure whether again > this attack makes sense.
If S controls F, then it could have just forwarded F->R directly without involving C D E at all, so in both cases C D E would also not earn any forwarding fees; instead now C D E learn of this payment, so the collusion S B F just unnecessarily leaks its intent to pay R by doing this. Again, S B F cannot steal funds from C D E by this method, it can only grief them, but it could grief C D E by just B and F, not involving any S or R, so this does not increase the attack surface at all. So I do not see the point of this exercise; S controls F anyway, so it could just as well have forwarded F->R directly. Regards, ZmnSCPxj > > On Thu, Apr 2, 2020 at 6:04 AM ZmnSCPxj <zmnsc...@protonmail.com> wrote: > > > Good morning Subhra, > > > > > Hi ZmnSCPxj, > > > Thanks for the explanation. Pardon my knowledge in this domain but > > > what I meant is that sender has malicious intent and wants honest parties > > > to suffer. So by leaking secrets, I meant not revealing its or receiver's > > > identity to the forwarding nodes, but somehow manipulating subset of the > > > nodes so that an attack can be launched in the network. For example, > > > consider path S->A->B->C->D->E->F->R. If we consider the protocol > > > anonymous multihop lock, S samples secret x_a,x_b,x_c,x_d,x_e,x_f for the > > > nodes A,B,C,D,E and F respectively. R gets the key > > > k=x_a+x_b+x_c+x_d+x_e+x_f. If S colludes with B (possibly leak the value > > > x_c,x_d,x_e,x_f to B), lock funds C,D,E but then not allowing it to relay > > > funds (possibly do a griefing attack?). What I meant is that if one > > > totally relies on S for the setup phase, won't it lead to other > > > vulnerabilities? The situation might sound unrealistic but I still have > > > doubt whether we guarantee fairness if put our trust entirely on one > > > single entity. > > > > Note that in the context of PTLCs, R does not get a key (as in private key) > > of x_a+x_b+x_c+x_d+x_e+x_f. > > Instead, R still continues to use its normal private key for claiming > > HTLC/PTLC. > > We simply have R generate an adaptor signature first and hand that over to > > F, such that completing the signature and publishing it onchain will reveal > > a secret x_r (which is NOT the node privkey of R). > > > > What happens really here is that each hop sets up a PTLC. > > The sender is responsible for ensuring that the F->R PTLC is equal to x_r * > > G, that E->F is equal to (x_f + x_r) * G, that D->E is equal to (x_e + x_f > > + x_r) * G, and so on. > > However, the sender knows only (x_r * G) without knowing x_r, thus it > > never is able to completely control the secret at every point -- the > > receiver knows the other secret as well. > > > > That is the entire crux of the argument --- *both* sender and receiver > > control the secrets anyway, so it is not controlled by a single entity, at > > least for non-self-payments. > > > > > If S colludes with B (possibly leak the value x_c,x_d,x_e,x_f to B), lock > > > funds C,D,E but then not allowing it to relay funds (possibly do a > > > griefing attack?). > > > > Griefing attacks are only possible by not claiming or forwarding the attack. > > If S and B "collude" to perform a grief, then either B never forwards to C, > > in which case there is no possible way to attack, or C receives it and > > claims it but B does not claim it, in which case B paid out money and is > > now idiotically refusing to claim money. > > > > Grief attacks are attacks by payers and payees on intermediate nodes (S and > > R attacking A,B,C,D,E,F), and in that case the entire payment secret would > > be known by both S and R anyway. > > > > So S and B cannot cooperate to perform a griefing attack on the path. > > > > Regards, > > ZmnSCPxj > > > > > > > > On Wed, Apr 1, 2020 at 10:39 PM ZmnSCPxj <zmnsc...@protonmail.com> wrote: > > > > > > > Good morning Subhra, > > > > > > > > > Commenting on it : "As for ZmnSCPxj's suggestion, I think there is > > > > > the same kind of issue. > > > > > The secrets we establish with anonymous multi-hops locks are between > > > > > the *sender* > > > > > and each of the hops. In the route blinding case, what we're adding > > > > > are secrets > > > > > between the *recipient* and the hops, and we don't want the sender to > > > > > be able to > > > > > influence those." > > > > > Is it a good idea to rely entirely on the sender for sampling the > > > > > secrets as well as generating the PTLC? As happens in anonymous > > > > > multi-hops locks, for example. Or as it has been discussed later in > > > > > the thread, both receiver and sender must be involved in creation of > > > > > PTLC? What happens if sender/receiver is/(or both are) corrupted? Can > > > > > it leak secrets to other parties? > > > > > > > > If both are corrupted, this brings up the question: who are you hiding > > > > any information from? > > > > The corruptor has already corrupted both: there is no security or > > > > privacy possible, the payment is already totally compromised. > > > > > > > > The operation of forwarding nodes is simple enough that in general they > > > > cannot be attacked: sure, the sender and receiver together knows who > > > > they are, but forwarding nodes are the ones who advertise themselves in > > > > order to be forwarded through, so they already are known anyway. > > > > > > > > When considering privacy, we should always consider that it is the > > > > payment as a whole which we want to have privacy: we want that third > > > > parties will not be able to nail down which particular sender sent to > > > > which particular receiver. > > > > Thus if the sender already leaks who it is paying to, that is pretty > > > > much the entire loss of privacy. > > > > > > > > Now, currently on Lightning, in general the receiver does not know the > > > > sender node. > > > > (Applications on top of Lightning might have the receiver require the > > > > sender to provide private data, such as a drop point to send a physical > > > > product to, but *looking only on Lightning* the sender does not send > > > > any of its information to the receiver). > > > > > > > > However, currently, the exact receiver node has to be known by the > > > > sender, in order for the sender to make a route to it. > > > > This is a concern since it may be possible for layer-crossing > > > > shenanigans to be performed, for example the sender might attempt to > > > > eclipse the receiver on the Bitcoin blockchain layer and make it lose > > > > funds by not realizing that a PTLC/HTLC has been timed out (because the > > > > eclipse attack prevents new blocks from propagating to the receiver, > > > > who blithely continues to think that the timeout has not been reached > > > > when in fact it has). > > > > > > > > The proposal to have a receiver provide a partial, blinded path gives > > > > the receiver better privacy protection against the sender: the sender > > > > knows it is one of a possible number of nodes within some number of > > > > hops from a particular node, but does not know if it is that exact > > > > node, one of its neighbors, or one of its neighbor neighbors (etc.) is > > > > the actual receiver. > > > > This should make it harder for the sender to attack the receiver by > > > > attempting to locate its node and eclipse it at the Bitcoin layer, or > > > > other blockchain-layer shenanigans. > > > > > > > > Now, the argument I make is that while the blinding factors in a > > > > decorrelated PTLC-based payment may be generated by the sender in order > > > > for the sender to have path privacy, it is safe for the receiver to > > > > provide blinding factors to a partial path as well. > > > > We should remember that the blinding factors are just scalars added to > > > > the final point/scalar at the ultimate recipient, and the final > > > > point/scalar pair is completely controlled by the recipient anyway, so > > > > it should not be an issue here: the point that the sender will target > > > > at the first node in the receiver-provided partial route is no > > > > different from the final point that the sender would have targeted if > > > > it knew exactly who the receiver is. > > > > > > > > Regards, > > > > ZmnSCPxj > > > > > > -- > > > Yours sincerely, > > > Subhra Mazumdar. > > -- > Yours sincerely, > Subhra Mazumdar. _______________________________________________ Lightning-dev mailing list Lightning-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev