Cryptography: protection against single-player games

This is more of a crypto / algorithm than a programming issue, so feel free to tell me to go elsewhere if this doesn't fit here.

I am wondering if there is a solution to the “disconnect” problem: the two peers A and B are talking to each other, and this should be an insult to the peer-to-peer connection. Is it possible to prove that the shutdown was caused by a particular party?

Of course, if these two were connected with a straight line, there would be no way to determine the responsible party for the loss of connection. Thus, we must enable some surrounding network and determine how disconnected by the party that loses connection with the third arbitrator node in the network. However, if A wants to disconnect, it can selectively block only the connection to B, while maintaining communication with the arbiter.

Is there a cryptographic solution whereby A and B continuously exchange keepalives, which they also pass to the arbiter, which ensures that you can always tell who caused the intentional shutdown?

+4
source share
2 answers

I think such a protocol is not possible.

Let's say you have a connection

arbiter /\ / \ / \ / \ / \ peerA --- peerB 

And now one of the peers disconnected peerA - peerB.

Before disconnecting, the whole situation may arise. (Sending data to B or B, or B-> A, or something else.)

Since there is no A ↔ B link, you cannot tell who is breaking the connection. Both parties may declare that

a) they send the last packet
b) they did not receive the package

The point is that when the link A ↔ B has disappeared, you cannot determine who violates it, because it can even be a third party in the middle.

One practical solution, in my opinion, is that as soon as this happens, you redirect all traffic from the arbiter, which now acts as a proxy. Both sides, meanwhile, direct the track to each other and send the results to the arbiter. Even if this does not succeed and scammers implement fake ICMP packets, this method of cheating will not work, and sooner or later they will refuse this method of cheating. In the worst case scenario, you will have to redirect some traffic and act like a router, but you can statistically track cheaters and take the right action against them.

+1
source

I am not an expert, but since everything here is a little quiet, I thought I wanted to indicate where I will start. It is possible that what I write is not good, but at least he gets the ball.

It seems to me that trip detection is the same class of problems as error detection in general. (apparently there is no “disconnect signal”, so we are trying to detect when someone pulls out the plug). I feel this relates to the topic of noisy channel coding theory. I am not an expert in this, but I have a good book on this.

David mackay

Information Theory, Inference and Learning Algorithms.

It is available for free viewing on the website of the website (with the permission of the publisher) so that you can judge whether it is useful or not on your own without paying any money.

For this particular problem, you may want to find re-accumulation codes (chapter 49 — you don’t need to read 48 chapters before). You send a repetition of each bit of the signal that you want to send, but rearrange them using a random (but fixed) key. Then you specify the checksums on the permutation signal.

So, if the central server used different keys for each user - I would think that they might find out who introduced the error of disconnecting the middle signal (for example, by pulling out their plug).

How would I start, but I'm not an expert.

Tom

0
source

Source: https://habr.com/ru/post/1338759/


All Articles