[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DC net Implementation




>
>Using a central node to coordinate the DC-net traffic requires that the
>participants trust that central node.  If the central node is evil,
>I think there are things it could do to identify message senders.  For
>example, instead of doing a single collation of N messages, it could
>do N collations of N-1 messages, and find out who sent a message by
>seeing in which collation that message doesn't show up.
>
A collation of N-1 nodes will always produce garbage; the whole set is
needed for the message to fall out.
Example
        C wishes to broadcast the number 10.
        A sends   5 to  B
        B sends  11 to  C
        C sends   7 to  D
        D sends  14 to  A

        A sends 14 -  5      =  9 to Central node
        B sends  5 - 11      = -6
        C sends 11 -  7 + 10 = 14
        D sends  7 - 14      = -7
        Central node computes 9 - 6 + 14 - 7 = 10;
        Collating the subset ABC yields 17
        Collating            ABD yields -4
                             ACD yields 16
                             BCD yields  1

What Jim McCoy was talking about (I think: please correct me) was that
there are attacks on this protocol, that can prevent messages from being
transmitted; or alter messages in transit.

Example:  B wants to jam the transmission.  He simply violates the protocol.

        A sends 14 -  5      =  9 to Central node
        B sends  5 - 11 +  8 =  2 (the +8 is static)
        C sends 11 -  7 + 10 = 14
        D sends  7 - 14      = -7
Now the message sums up to 18, instead of 10 as C intended.

Worse than that;  If B knows that 10 is going to be broadcast, he can force
the message to be any value he wants, by properly choosing his jamming
signal.

There's an even nastier trick you can play with the vanilla DC protocol.
Two adjacent members can conspire to set up a 3rd.  Let's say the DC Cell
gets busted by the Feds for posting the illegal number 10 to the Internet.
The guilty party is C, but C and D can lie about the number they shared and
make it look like A.

C testifies, "I received an 11 from B and sent a -3 to D"
D testifies, "I received  a  3 from C and sent a  4 to A"
That makes A's calculation look off by 10, the number of the message.
A testifies, "You liar! You gave me 14!"
Who's lying?

I'm not sure is these constitute bugs or "features" of the DC protocol;
since the goal is to obscure the source of the message, allowing jammers
and spoofers may preserve plausible deniability at the cost of network
reliability;  then again, maybe I'm just being lazy.

--
You have violated Robot's Rules of Order and will be asked to leave the
future immediately.  Thank You.