2004年8月26日星期四

MUTE P2P 匿名文件共享软件介绍

MUTE是一个匿名的p2p文件共享软件,为了逃避RIAA(Recording Industry Association of America)和其他一些组织在p2p文件共享的软件社区里面收集证据,这个软件采用了很多方法来实现匿名。因为要实现匿名,在搜索到文件之后,下载文件就不能直接从源文件的机器上自己下,而要通过那些中间的机器中转。这个涉及到一个传输路径的问题,在这方面,mute的一个特色是文件传输中的路由路径是通过蚂蚁算法实现的。
Mute首先为没有机器定义了一个虚拟的地址。当一台机器得到它想要的结果后,它的纪录里面只可以看到这些结果是来自这些虚拟的地址。对于每个节点的直系邻居,节点是很容易其IP地址的。
Mute的理念是,任何人如果搜索到了一些文件,都无法确定这些文件是属于自己的直系邻居(这些机器时可以明确的知道IP的)的还是来源于网络中的别处。
搜索过程中的UC(Utility Counters)机制:
类似Gnutella的的查找都有一个查找信息的生存期(TTL)问题,以搜索为例,任何搜索的发起者都可以规定一个TTL来限制本次搜索的深度--即在向下扩散多少次以后就停止。这样,如果一个用户设定TTL = 1 ,则它的这次查询就是查询其直系邻居的机器,这可以帮助RIAA这样的组织收集证据,与MUTE的要求是不符的。在MUTE里面采用了UC机制,可以限制返回的结果的个数。
每次查询有一个UC限制 当某个节点的UC达到这个值就停止查询继续向下传播
newUC = oldUC + alpha * localResultCount * hopCount
+ beta * forwardNeighborCount^( 1 + 1/(1 + hopCount) )+ gamma
这个公式的可以限制一个搜索请求随着搜索结果和跳数的增加而达到一定的值。
单单有这个还不行,应为用户可以采用适当的UC阈值(比如UC=0),让查询只要经过一跳(one hop)就结束。因此Mute又采用了另外一个措施,就是在每次搜索发起的时候带一个随机数向下传播,节点收到这个搜索请求时再对这个随机数生成一次hash值,只有这个随机数符合某个条件时,搜索才切换为UC模式,采用UC限制。而在此之前,UC一直为0。(MUTE的hash算法采用SHA1算法)但是,这有可能会导致别人的统计分析(这部分我还没有弄明白)。

别有用心的人还有一个办法,就是想法伪装发送发送一个合适的UC值,作为搜索广播,因为这个UC很接近UC的规定与阈值,其邻居节点可能很容易受骗,马上就返回结果。MUTE可以采用的办法是:
1. 当查询达到UC阈值时,再采用随机数模式让查询在继续几跳。但是,伪装者也可以给出合适的值,让其邻居节点再生成的hash值,符合搜索结束要求;
2. 收到搜索请求的节点,根据一个概率(比如抛硬币一样的的办法)来确定是否继续查询,这个时候,节点选择一个邻居继续向下传播,这个邻居也采用相同的独立概率模式来确定是否向下传播。这个模式称为链模式 chains mode。

上面的方法2同样很容易被统计分析(仔细想想就知道),因此MUTE在一次确定了这条链后,就不再改变。这样在网络拓扑没有改变的时候,不同深度的链节点就总是会返回信息了。和深度为一的节点是相同的。

MUTE search



另外:MUTE的密钥交换算法使用的RSA,文件传输的加密是采用的128位的AES算法。

Reference:

MUTE Project : http://mute-net.sourceforge.net/utilityCounters.shtml

没有评论: